[C con Clase] fatal error LNK1136: invalid or corrupt file
wolverine_ch
wolverine_ch en hotmail.com
Sab Abr 16 01:47:07 CEST 2011
hola Conclase, bueno pues he hecho una lista enlazada usando clases y al probarlo en vc++ 6.0 me sale esto:
Linking...
C:\Archivos de programa\Microsoft Visual Studio\VC98\LIB\comdlg32.lib : fatal error LNK1136: invalid or corrupt file
Error executing link.exe.
y al probarlo en turbo c++ 4.5 se ejecuta normal pero me sale un linker warning que dice: "No module definiton file specified: using defaults " y cuando pongo la opcion salir del programa me sale "General protection exception" y se selecciona una linea del codigo del destructor.
#include<stdio.h>
#include<string.h>
#include<conio.h>
#include<iostream.h>
#include<stdlib.h>
class util{
char codigo[20];
char descripcion[30];
float precio;
int stock;
//declaracion de puntero sgte en nodos de la lista
util *sgte;
public:
util();
void llenar();
void presentar();
friend class listautil;//solo le da permiso a listautil
char* getcodigoutil(){return codigo;}
float getprecio(){return precio;};
};
//////////////////////////funciones clase util//////////////////////
util::util(){
precio=0.0;
stock=0;
codigo[0]=descripcion[0]=NULL;
sgte=NULL;
}
void util::llenar(){
cout<<"\n Registro de nuevo util: \n" ;
cout<<"\nIngrese codigo: " ; cin>>codigo;
cout<<"\nIngrese descripcion: " ;fflush(stdin); cin>>descripcion;
cout<<"\nIngrese prrecio: " ; cin>>precio;
cout<<"\nIngrese stock: " ; cin>>stock;
}
void util::presentar(){
cout<<"\n Datos de util: \n" ;
cout<<"codigo :"<< codigo<<"\n";
cout<<"descripcion: "<<descripcion <<"\n";
cout<< "precio: "<<precio<<"\n";
cout<<"stock :"<<stock <<"\n";
}
///////////////////////////////////////////claselistautiles///////////////////
class listautil{
int N;
util *cab,*ultimo;
public:
listautil(){
N=0;cab=ultimo=NULL;}
void inserta(util* );
void opcion_agregar_un_util();
void presenta();
util* buscar(char cod[]) ;
void mostrarutil();
~listautil(); //DESTRUCTOR
};
//////////////////////////////////////////////////////////////////////////////
void listautil ::inserta(util* A){
A->sgte=NULL;
if(N==0)
cab=A;
else{
A->sgte=ultimo->sgte;
ultimo->sgte=A;
}
ultimo=A;
N++;
}
////////////////////////////////////////////////////////////////////////////////
void opcion_agregar_un_util(listautil& LU)
{
util* aux;
aux=new util();
aux->llenar();
if(LU.buscar(aux->getcodigoutil())==NULL){
LU.inserta(aux);
}else
cout<<"\nEl producto ya existe por favor ingrese un producto diferente";
getch();
}
///////////////////////////////////////////////////////////////////////////////
void listautil:: presenta(){ //PRESENTA TODA LA LISTA DE UTILES
util *temp=cab;
cout<<"\n Datos de la lista:\n";
while(temp!=NULL)
{
temp->presentar();
temp=temp->sgte;
}
if(cab==NULL)
cout<<"\n no hay utils :(";
getch();
}
///////////////////////////////////////////////////////////////////////////////////////////
util* listautil::buscar(char cod[]){
util *temp=cab;
while(temp!=NULL){
/* if(strcmp(temp->codigo,cod)==0)*/
if(atoi(temp->codigo)==atoi(cod))
return temp;
temp=temp->sgte;
}
return NULL;
}
////////////////////////////////////////////////////////////////////////////////////////////////////
void listautil::mostrarutil()//MUESTRA UN UTIL ESPECIFICO
{
char cod[10];
util *pos;
cout<<"\n ingrese codigo a buscar : ";
fflush(stdin);
cin>>cod;
pos=buscar(cod);
if(pos!=NULL)
pos->presentar();
else
cout<<"codigo no existe";
getch();
}
listautil::~listautil(){
util* temp;
util* ant;
temp=new util();
ant=new util();
ant=cab;
temp = cab->sgte;
while(temp!=NULL)
{
delete ant;
ant = temp;
temp=temp->sgte;
}
cout<<"\n\n Lista completa borrada.";
}
//////////////////////////////////////////////////////////////////////////////
void proceso(listautil &LU){
int op;
do{
clrscr();
cout<<"\tMENU:\n";
cout<<"\n1. Agregar un util escolar";
cout<<"\n2. Presentar todOS LOS UTILES";
cout<<"\n3. Mostra un util escolar especifico";
cout<<"\n4. Salir";
cout<<"\n Ingrese opcion:";
cin>>op;
switch(op){
case 1:opcion_agregar_un_util(LU);
break;
case 2: LU.presenta();break;
case 3:LU.mostrarutil();break;
}
}while(!(op==4));
}
/////////////////////////////////////////////////////////////////////////////////////////////////
int main(){
clrscr();
listautil LU;
proceso(LU);
getch();
return 0;
}
....que opinan ustedes
SALUDOS
Más información sobre la lista de distribución Cconclase