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;
}