Error ld 1 returned status. Ayuda plox

Iniciado por daaralvarez, 20 Noviembre 2018, 08:52 AM

0 Miembros y 1 Visitante están viendo este tema.

daaralvarez

Mi código:



#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
#include <iostream.h>

struct dato {
int i;
dato *s;
}*a, *i, *p, *e;

int da;

int buscar(int d);
void insertar(int dat);
void mostrar(void);
void borrar(void);
void menu(void);
void guardar(void);
void cargar(void);

main()
{
menu();
}

void menu(void)
{
int opc,da;
do
{
cout<<"1 - Buscar datos";
cout<<"\t2 - Insertar datos";
cout<<"\t3 - Mostrar todos los datos";
cout<<"\t4 - Borrar un dato";
cout<<"\t5 - Guardar datos a Archivo";
cout<<"\t6 - Cargar datos de Archivo";
cout<<"\t0 - Finalizar";
cout<<"\nSeleccione opcion: ";
cin>>opc;
switch(opc)
{
case 0: cout<<"\n\nFinaliza el programa";
getch();
//usar delete para eliminar
//toda la lista
p=i;
while(p)
{
a=p;
p=p->s;
delete(a);
}
exit(0);
case 1: cout<<"\n\nIngrese dato a buscar: ";
cin>>da;
if(buscar(da))
cout<<"\n\nDato existe";
else
cout<<"\n\nDato NO EXISTE";
getch();
break;
case 2: cout<<"Ingrese dato: ";
cin>>da;
insertar(da);
break;
case 3: mostrar();
break;
case 4: borrar();
break;
case 5: guardar();
break;
case 6: cargar();
break;
//por las dudas que el operador ingrese
//cualquier verdura, fruta u otro tipo de hierba
default: cout<<"\n\nOPCION NO VALIDA!!!";
getch();
}
}while(opc);
}

void mostrar(void)
{
int cont=1;
if(!i)
{
cout<<"\n\nNO HAY LISTA PARA MOSTRAR";
getch();
return;
}
p=i;
cout<<endl<<endl;
while(p)
{
cout<<cont++<<" - Valor = "<<p->i<<endl;
p=p->s;
}
cout<<"\n\nEso es todo";
getch();
}

int buscar(int d)
{
if (!i)
{
cout<<"No hay datos en la lista!!!";
getch();
return(0);
}
p=i;
a=NULL;
while(p->s && p->i<d)
{
a=p;
p=p->s;
}
return(p->i==d?1:0);
}

void insertar(int dat)
{
if(!i)
{
i=new(dato);
i->s=NULL;
i->i=dat;
return;
}
if(buscar(dat))
{
cout<<"\n\nDato existente";
getch();
return;
}
e=new(dato);
e->i=dat;
if(p==i && p->s)
{
e->s=p;
i=e;
return;
}
if(p==i && !p->s)
{
if(p->i < e->i)
{
p->s=e;
e->s=NULL;
}
else
{
e->s=p;
i=e;
}
return;
}
if(p->s)
{
a->s=e;
e->s=p;
return;
}
if(e->i > p->i)
{
e->s=NULL;
p->s=e;
}
else
{
a->s=e;
e->s=p;
}
}

void borrar(void)
{
cout<<"\n\nIngrese dato a eliminar: ";
cin>>da;
if(buscar(da))
{
if(a)
a->s=p->s;
else
i=p->s;
delete(p);
cout<<"\n\nDato eliminado";
}
else
cout<<"\n\nDato no se encuentra";
getch();
}

void guardar(void)
{
FILE *arch;
arch=fopen("DATOS-A.TXT","w");
if(!i)
{
cout<<"\n\nNO HAY LISTA PARA GUARDAR";
getch();
return;
}
p=i;
while(p)
{
fprintf(arch,"%i\n",p->i);
p=p->s;
}
cout<<"\n\nArchivo Guardado";
fclose(arch);
getch();
}

void cargar(void)
{
int c,x;
FILE *arch;
arch=fopen("DATOS-A.TXT","r");
if(!arch)
{
cout<<"\n\nNO EXISTE EL ARCHIVO";
getch();
return;
}

do {
c=fscanf(arch,"%i\n",&x);
if(c!=EOF)
{
insertar(x);
}
}
while (c!=EOF);
cout<<"\n\nArchivo Cargado";
fclose(arch);
getch();
}


Todo iba bien resolviendo los errores de sintaxis hasta que lo volví a compilar me arrojó el siguiente error...

[Error] ld 1 returned estatus.
Obviamente ya no compiló.
Ya he tratado de resolverlo pero no se como, ayuda porfa, soy nuevo en esto.
Agradezco de antemano su ayuda.

K-YreX

Prueba a quitar el ".h" a <iostream>. Además tienes que incluir <using namespace std;>.
En ocasiones devuelve error si lo tienes abierto en otra pantalla. Y si con esto no se soluciona, adjunta el error que te salga.

PD: El código entre etiquetas GeSHi.
Y... una cosa más... Ese código es tuyo? O está sacado de algún sitio? Porque usar <iostream> y <stdio.h>.... Aquí hay algo raro.
Código (cpp) [Seleccionar]

cout << "Todos tenemos un defecto, un error en nuestro código" << endl;

daaralvarez

Gracias, tomé la base de una página en internet, luego sólo fui quitando y poniendo cosas para ajustar el código a mis necesidades  :P
Pero gracias, ya hice esas 2 cosas y ya jala. Muchas gracias. ;D

K-YreX

Como programa funciona pero si estás interesado en la programación y quieres mejorar un poco ese código:
- Elimina <stdio.h>. No estás usando entradas/salidas de C, sino de C++.
- Elimina <conio.h> por favor. Y cómo uso <getchar()> ?:huh:. No lo uses, usa <cin.get()> para lo que no necesitas <conio.h>.
- Las funciones que no reciben parámetros en C++ no es necesario escribir <void> en los parámetros.
- No uses librerías acabadas en ".h" sino que empiecen por "c". Es decir: <stdlib.h> -> <cstdlib>y así con todas.
Y esto sin haber llegado a mirar el programa por dentro.
Si no te interesa y sólo quieres que el programa funciones, ya está, objetivo conseguido.
Código (cpp) [Seleccionar]

cout << "Todos tenemos un defecto, un error en nuestro código" << endl;