0

Tengo este código en C++ y estoy recibiendo un error "Returned id 1 exit status", pero no encuentro el error dentro del código, llevo ya 2 días buscando y no encuentro la razón, es mi proyecto final y estoy desesperado, por favor, ayuda! Estoy usando pasos de parámetros en funciones y una libreria estática, la cual esta debajo del código principal y básicamente esa librería es de menús de opciones.

 //Final Project - Estructura de Datos
//Books and Videogames Catalogue    

#include<iostream>
#include<stdlib.h>
#include<cstring>
#include "Menus.h"

using namespace std;

//Constantes
string status = "Desconocido";
int opcion;
char opc;

//TDA
struct libro{
    char titulo[40];
    string editorial;
    int edicion;
    char autor[60];
    int estado;
    string corriente;
    char genero[40];
    string completado;
    int paginas;
    float precio;
    libro *next;
};
struct videojuego{
    char titulo[40];
    int anio;
    string desarrolladora;
    string lenguaje;
    int estado;
    string completado;
    string genero;
    int niveles;
    float precio;
    string consola;
    videojuego *next;
};

libro *lLista = NULL;
videojuego *vLista = NULL;

//Prototipos

//Operaciones
void insertarVideojuego(videojuego *&);//Add Node
void insertarLibro(libro *&);//Agregar nuevo nodo
void consultar(videojuego *, libro *);//Consultar ambas listas

int main(){
    do{
        menu(opcion);
        switch (opcion){
            case 1:
                menuInterno(opc);
                switch(opc){
                    case 'a':
                        insertarVideojuego(*&vLista);
                        break;
                    case 'b':
                        insertarLibro(*&lLista);
                        break;
                    case 'c':
                        cout << "Seleccionaste salir. Hasta pronto." << endl;
                        return 0;
                        break;
                }
            case 2:
                menuInterno(opc);
                consultar(*&vLista, *&lLista);
                break;
            case 3:
                cout << "Seleccionaste salir, vuelve pronto" << endl;
                break;
            default:
                cout << "Opcion invalida. Intentalo de nuevo." << endl;
        }
    }while(opcion != 3);    
}

/***********************OPERACIONES DEL TDA***********************/
void insertarVideojuego(videojuego *vLista, char &opc){
    bool bandera = false;
    //Declarar Variable
    videojuego *newGame;

    //Reservar memoria
    newGame = new(videojuego);

    //Validación del apuntador
    if (newGame == NULL){
        cout << "Memoria Insuficiente" << endl;
        return;
    }

    //Petición de Datos
    cout << "Titulo: ";
    cin >> newGame->titulo;
    //Se llama la funcion buscar por título, se le pasa el valor de newGame->titulo y se valida con un strcmp que no exita ya un elemento con el mismo titulo

    //Año de Publicación
    do{
        cout << "Anio: ";
        cin >> newGame->anio;
        if(newGame->anio < 1977){
            cout << "Anio invalido" << endl;
        }
    }while(newGame->anio < 1977);
    //Crear función para validación de números positivos
    //Fin del Año de Publicación

    //Desarrolladora
    desarrolladora();
    if (opc == 's' || opc == 'S'){
        do{
            switch (opc){
                case 'a':
                    newGame->desarrolladora = "Ubisoft";
                    break;
                case 'b':
                    newGame->desarrolladora = "Blizzard";
                    break;
                case 'c':
                    newGame->desarrolladora = "Rockstar";
                    break;
                case 'd':
                    newGame->desarrolladora = "Konami";
                    break;
                case 'e':
                    cout << "¿Cual es la desarrolladora?" << endl;
                    cin >> newGame->desarrolladora;
                    break;
                default:
                    cout << "Trata de nuevo" << endl;
                    bandera = true;
                    break;
            }
        }while(bandera == true);
    }
    //Fin Desarrolladora

    //Lenguaje de Programación
    cout << "¿Conoces el lenguaje de programacion? (S/N) ";
    cin >> opc;
    if(opc == 's'||opc == 'S'){
    lenguaje();
    cin >> opc;
    do{
        bool bandera = false;
        switch (opc){
            case 'a':
                newGame->lenguaje = "C#";
                break;
            case 'b':
                newGame->lenguaje = "C++";
                break;
            case 'c':
                newGame->lenguaje = "JS";
                break;
            case 'd':
                newGame->lenguaje = "Java";
                break;
            case 'e':
                cout << "¿Cual es la desarrolladora?" << endl;
                cin >> newGame->lenguaje;
                break;
            default:
                cout << "Trata de nuevo" << endl;
                bandera = true;
                break;
        }
    }while(bandera == true);
    }
    else{
        newGame->lenguaje = "Desconocido";
    }
    //Fin del Lenguaje de Programación

    //Estado
    do{
        cout << "Estado: ";
        cin >> newGame->estado;
        if (newGame->estado < 0 || newGame->estado > 10){
            cout << "Cantidad invalida" << endl;
        }
    }while(newGame->estado <= 0 || newGame->estado > 11);
    //Fin Estado

    //Completado
    cout << "¿Completado? Si = s ";
    cin >> opc;
    if(opc == 's' || opc == 'S'){
        newGame->completado = "Completo";
    }
    else{
        newGame->completado = "Incompleto";
    }
    //Completado

    //Género
    cout << "Genero: ";
    cin >> newGame->genero;
    //Fin Género

    //Niveles
    if(newGame->completado != "Completo"){
        cout << "Niveles: ";
        cin >> newGame->niveles;
    }
    else{
        newGame->niveles = 0;
    }
    //Fin Niveles

    //Precio
    do{
        system("cls");
        cout << "Precio: ";
        cin >> newGame->precio;
        if(newGame->precio < 0){
            cout << "Precio no válido. Vuelve a intentarlo." << endl;
        }
        system("pause");
    }while(newGame->precio < 0);
    //Fin precio

    cout << "Consola: ";
    cin >> newGame->consola;
    //Fin Petición de Datos

    // 5) Actualizar apuntador del nuevo nodo
    if (vLista == NULL){
        newGame->next = NULL;
    }
    else{
        newGame->next = vLista; 
    }

    // 6) Agregar el nodo a la lista
    vLista = newGame;

    cout << "Album Agregado Correctamente" << endl;
    return;
}
void insertarLibro(libro *lLista){
    bool bandera = false;
    char opc;
    cin >> opc;
    if(opc == 'b'){
        //Declarar Variable
        libro *newBook;

        //Reservar memoria
        newBook = new(libro);

        //Validación del apuntador
        if (newBook == NULL){
            cout << "Memoria Insuficiente" << endl;
            return;
        }

        //Petición de Datos
        cout << "Titulo: ";
        cin >> newBook->titulo;
        //Se llama la funcion buscar por título, se le pasa el valor de newGame->titulo y se valida con un strcmp que no exita ya un elemento con el mismo titulo

        //Autor
        cout << "Consola: ";
        cin >> newBook->autor;
        //Fin de Autor

        //Edicion
        do{
            cout << "Edicion: ";
            cin >> newBook->edicion;
            if(newBook->edicion < 0){
                cout << "Edicion invalida" << endl;
            }
        }while(newBook->edicion > 0);
        //Crear función para validación de números positivos
        //Fin del Año de Publicación

        //Editorial
        cout << "¿Conoces la Editorial?(s/n): ";
        cin >> opc;
        if (opc == 's' || opc == 'S'){
            editorial();
            cin >> opc;
            do{
                bandera = false;
                switch (opc){
                    case 'a':
                        newBook->editorial = "Alfaguara";
                        break;
                    case 'b':
                        newBook->editorial = "DeBolsillo";
                        break;
                    case 'c':
                        newBook->editorial = "Punto de Lectura";
                        break;
                    case 'd':
                        cout << "¿Cual es la desarrolladora?" << endl;
                        cin >> newBook->editorial;
                        break;
                    default:
                        cout << "Trata de nuevo" << endl;
                        bandera = true;
                        break;
                }
            }while(bandera == true);
        }
        //Fin Desarrolladora

        //Lenguaje de Programación
        cout << "¿Conoces la corriente? S = Si ";
        cin >> opc;
        if(opc == 's'||opc == 'S'){
            corriente();
            cin >> opc;
            do{
                bandera = false;
                switch (opc){
                    case 'a':
                        newBook->corriente = "Clasicismo";
                        break;
                    case 'b':
                        newBook->corriente = "Medievo";
                        break;
                    case 'c':
                        newBook->corriente = "Humanismo";
                        break;
                    case 'd':
                        newBook->corriente = "Renacimiento";
                        break;
                    case 'e':
                        newBook->corriente = "Barroquismo";
                        break;
                    case 'f':
                        newBook->corriente = "Romanticismo";
                    case 'g':
                        newBook->corriente = "Vanguardismo";
                        break;
                    case 'h':
                        newBook->corriente = "Literatura Contemporanea";
                    case 'i':
                        cout << "¿Cual es la corriente?" << endl;
                        cin >> newBook->corriente;
                        break;
                    default:
                        cout << "Trata de nuevo" << endl;
                        bandera = true;
                        break;
                }
            }while(bandera == true);
        }
        else{
            newBook->corriente = "Desconocido";
        }
        //Fin del Lenguaje de Programación

        do{
            cout << "Estado: ";
            cin >> newBook->estado;
            if (newBook->estado < 0 || newBook->estado > 10){
                cout << "Cantidad invalida" << endl;
            }
        }while(newBook->estado >= 0 || newBook->estado < 11);

        //Completado
        cout << "¿Completado? Si = s ";
        cin >> opc;
        if(opc == 's' || opc == 'S'){
            newBook->completado = "Completo";
        }
        else{
            newBook->completado = "Incompleto";
        }
        //Completado

        //Género
        cout << "Genero: ";
        cin >> newBook->genero;
        //Fin Género

        //Niveles
        cout << "Paginas: ";
        cin >> newBook->paginas;
        //Fin Niveles

        //Precio
        do{
            system("cls");
            cout << "Precio: ";
            cin >> newBook->precio;
            if(newBook->precio < 0){
                cout << "Precio no válido. Vuelve a intentarlo." << endl;
            }
            system("pause");
        }while(newBook->precio > 0);
        //Fin precio
        //Fin Petición de Datos

        // 5) Actualizar apuntador del nuevo nodo
        if (vLista == NULL){
            newBook->next = NULL;
        }
        else{
            newBook->next = lLista; 
        }

        // 6) Agregar el nodo a la lista
        lLista = newBook;

        cout << "Album Agregado Correctamente" << endl;
        return;
    }
    return;

}

void consultar(libro *lLista, videojuego *vLista){
    // 1) Declarar una variable para recorrer la lista
    videojuego *copia = vLista;
    libro *lCopia = lLista;
    char opc;
    cin >> opc;
    if(opc == 'A' || opc == 'a'){
        // 2) Validación de existencias de registros
        if(vLista==NULL){
            cout << "No hay videojuegos registrados" << endl;
            return;
        }//if

        // 2) 
        cout << "Catalogos de Videojuegos" << endl;
        cout << endl;

        while( copia != NULL){
            cout << "Informacion del Juego" << endl;
            cout << "---------------------" << endl;
            cout << "Titulo: " << copia->titulo << endl;
            cout << "Publicacion: " << copia->anio << endl;
            cout << "Desarrolladora: " << copia->desarrolladora << endl;
            cout << "Lenguaje de programacion: " << copia->lenguaje << endl;
            cout << "Estado: " << copia->estado << endl;
            cout << "Completado: " << copia->completado << endl;
            cout << "Genero: " << copia->genero << endl;
            cout << "Niveles: " << copia->niveles << endl;
            cout << "Precio: " << copia->precio << endl;
            cout << "Consola: " << copia->consola << endl;
            cout << endl;
            //Asignación de la siguiente dirección de memoria
            copia = copia->next;
        }//while
        return;
    }
    if(opc == 'B' || opc == 'b'){
        // 2) Validación de existencias de registros
        if(lLista==NULL){
            cout << "No hay libros registrados" << endl;
            return;
        }//if

        // 2) 
        cout << "Catalogo de Libros" << endl;
        cout << endl;

        while( copia != NULL){
            cout << "Informacion del Libro" << endl;
            cout << "---------------------" << endl;
            cout << "Titulo: " << lCopia->titulo << endl;
            cout << "Autor: " << lCopia->autor << endl;
            cout << "Edicion: " << lCopia->edicion << endl;
            cout << "Editorial: " << lCopia->editorial << endl;
            cout << "Estado: " << lCopia->estado << endl;
            cout << "Completado: " << lCopia->completado << endl;
            cout << "Genero: " << lCopia->genero << endl;
            cout << "Paginas: " << lCopia->paginas << endl;
            cout << "Precio: " << lCopia->precio << endl;
            cout << "Corriente: " << lCopia->corriente << endl;
            cout << endl;
            //Asignación de la siguiente dirección de memoria
            lCopia = lCopia->next;
        }//while
        return;
    }
}

================================================================================================================================================================================================================================================================================================================================ ===========STATIC LIBRARY================================

#include<iostream>
#include<stdlib.h>
#include<cstring>

using namespace std;

//Menús Principal
int menu(int &opcion){
    system("cls");
    cout << "Catalogo de libros y videojuegos:" << endl;
    cout << "=================================" << endl;
    cout << "1. Agregar nuevo elemento" << endl;
    cout << "2. Consultar la lista" << endl;
    cout << "3. Salir" << endl;
    cout << "=================================" << endl;
    cout << "¿Que deseas hacer?" << endl;
    cin >> opcion;
    return opcion;
}// Menú

//Menú para identificar struct al que se le agregarán elementos
char menuInterno(char &opc){
    cout << "=============================" << endl;
    cout << "a. Videojuego" << endl;
    cout << "b. Libro" << endl;
    cout << "c. Salir" << endl;
    cout << "=============================" << endl;
    cout << "¿Que elemento necesitas?" << endl;
    cin >> opc;
    return opc;
}//Opciones para agregar un nuevo elemento

//Desarrolladora - Videojuego
void desarrolladora(){
    char opc;
    cout << "¿Conoces la desarrolladora?(s/n): ";
    cin >> opc;
}
void menuDesa(){
    cout << "¿Se encuentra en la lista?" << endl;
    cout << "a. Ubisoft" << endl;
    cout << "b. Blizzard" << endl;
    cout << "c. Rockstar" << endl;
    cout << "d. Konami" << endl;
    cout << "e. Otro" << endl;
}

//Editorial - Libro
void editorial(){
    cout << "¿Se encuentra en la lista?" << endl;
    cout << "a. Ubisoft" << endl;
    cout << "b. Blizzard" << endl;
    cout << "c. Rockstar" << endl;
    cout << "d. Konami" << endl;
    cout << "e. Otro" << endl;
}

//Lenguaje de programación - Videojuego
void lenguaje(){
    cout << "¿Se encuentra en la lista?" << endl;
    cout << "a. C#" << endl;
    cout << "b. C++" << endl;
    cout << "c. JS" << endl;
    cout << "d. Java" << endl;
    cout << "e. Otro" << endl;
}

//Menú Buscar - Videojuego
void menuBuscarV(){
    system("cls");
    cout << "Buscar por:" << endl;
    cout << "a. Titulo" << endl;
    cout << "b. Anio de publicacion" << endl;
}
//Menú Buscar - Libro
void menuBuscarL(){
    system("cls");
    cout << "Buscar por:" << endl;
    cout << "a. Titulo" << endl;
    cout << "b. Precio" << endl;
}

//Corriente literaria - Libro
void corriente(){
    cout << "Escoge uno de los incisos: " << endl;
    cout << "**************************" << endl;
    cout << "a. Clasicismo" << endl;
    cout << "b. Medievo" << endl;
    cout << "c. Humanismo" << endl;
    cout << "d. Renacimiento" << endl;
    cout << "e. Barroquismo" << endl;
    cout << "f. Romanticismo" << endl;
    cout << "g. Vanguardismo" << endl;
    cout << "h. Literatura Contemporanea" << endl;
    cout << "i. Otro" << endl;
}
  • 2
    `Returned ld 1 exit status` no significa nada por si mismo; **antes** de ese mensaje, el **enlazador** (no el compilador) te ha tenido que mostrar mas mensajes de error. Te sugiero que le eches un vistazo a https://es.stackoverflow.com/questions/65557/simbolo-externo-sin-resolver-qu%c3%a9-he-hecho-mal – Trauma Nov 20 '18 at 04:41
  • Si depuras paso a paso ¿Dónde falla el código? – PaperBirdMaster Nov 20 '18 at 09:12
  • no te falta un return al final del main? – Zharios Nov 20 '18 at 13:02
  • @Zharios el `return 0;` al final del `main` es opcional: https://es.stackoverflow.com/q/139624/63114 – Xam Nov 20 '18 at 16:24

0 Answers0