online compiler and debugger for c/c++

code. compile. run. debug. share.
Source Code   
Language
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ /* Programa en C++ para el registro de datos sobre el COVID-19, contiene las funciones: */ /* Registrar: datos de países (país, cantidad de contagios, cantidad de recuperaciones), síntomas, formas de prevención */ /* Ver: los paises, síntomas, formas de prevención */ /* Buscar: buscar paises contagiados (por nombre de país o cantidad de recuperados) */ /* Ver mensaje de la autora *** Autora: Raquel Medina */ /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ #include<locale.h> //para que reconozca todos los caracteres del español (ñ y acentos) #include<string.h> #include<stdlib.h> //para usar exit(1); #include<iostream> using namespace std; //Funciones void registrarPais(); void registrarPrevencion(); void registrarSintoma(); void verPais(); void verPrevencion(); void verSintoma(); void imprimirAut(const char *); int buscarPais(char buscarP[], int *ptr_b2); int buscarRecuperados(int buscarR, int *ptr_b2); void modificarPais(int *ptr_idBus); //Estructura para almacenar los datos del país struct pais{ char nombre_pais[50]; int contagios; int recuperaciones; }; //Estructura para almacenar los datos de las formas de prevención struct prevencion{ char titulo[50]; char descripcion[100]; }; //Estructura para almacenar los datos de los síntomas struct sintomas{ char sintoma[100]; int gravedad; }; #define nMax_registros 3 //Punteros dinámicos pais *ptr_pais = new pais[nMax_registros]; prevencion *ptr_preven = new prevencion[nMax_registros]; sintomas *ptr_sintomas = new sintomas[nMax_registros]; int main(){ setlocale(LC_CTYPE,"spanish");//para que reconozca todos los caracteres del español (ñ y acentos) int opc=0, idBus=0, b2=0, *ptr_idBus=NULL, busRecuperados=0; char conti=' ', opc2=' ', busPais[50], autora[70]=" Raquel Medina"; do{ cout<<"**************************** Menú ******************************"<<endl; cout<<"1. Registrar (paises, formas de prevención y síntomas)"<<endl; cout<<"2. Ver (paises, formas de prevención y síntomas)"<<endl; cout<<"3. Buscar paises contagiados (por país y cantidad de recuperados)"<<endl; cout<<"4. Modificar los datos de un país"<<endl; cout<<"5. Mensaje de la autora"<<endl; cout<<"Digite una opción: "; cin>>opc; cout<<endl<<"****************************************************************"<<endl; switch(opc){ case 1: cout<<"-- Registrar --"<<endl; cout<<"a- País"<<endl; cout<<"b- Formas de prevención"<<endl; cout<<"c- Síntoma"<<endl; cout<<endl<<"Digita la letra de la opción deseada: "; cin>>opc2; cout<<endl; switch(opc2){ case 'a': case 'A': registrarPais(); break; case 'b': case 'B': registrarPrevencion(); break; case 'c': case 'C': registrarSintoma(); break; default: cout<<endl<<"ERROR: Opción inválida!!!"<<endl; break; } break; case 2: cout<<"-- Ver --"<<endl; cout<<"a- Paises"<<endl; cout<<"b- Formas de prevención"<<endl; cout<<"c- Síntomas"<<endl; cout<<endl<<"Digita la letra de la opción deseada: "; cin>>opc2; switch(opc2){ case 'a': case 'A': verPais(); break; case 'b': case 'B': verPrevencion(); break; case 'c': case 'C': verSintoma(); break; default: cout<<endl<<"ERROR: Opción inválida!!!"<<endl; break; } break; case 3: fflush(stdin); cout<<endl<<"-- Buscar --"<<endl; cout<<"a- Por nombre del país"<<endl; cout<<"b- Por cantidad de recuperados"<<endl; cout<<endl<<"Digita la letra de la opción deseada: "; fflush(stdin); cin>>opc2; fflush(stdin); switch(opc2){ case 'a': case 'A': cout<<endl<<"Digita el nombre del país a buscar: "; cin.getline(busPais, 50); idBus = buscarPais(busPais, &b2); //Guardando ID de pais buscado, pero acá no se usa.....guardo la dirección de &b2 en el parametro puntero de la función break; case 'b': case 'B': cout<<endl<<"Digita la cantidad de recuperados a buscar: "; cin>>busRecuperados; if(busRecuperados >= 0){ buscarRecuperados(busRecuperados, &b2); }else{ cout<<endl<<"MENSAJE: El número ingresado debe ser igual o mayor a cero"; break; } break; default: cout<<endl<<"ERROR: Opción inválida!!!"<<endl; break; } break; case 4: b2 = 0; cout<<endl<<"-- Modificar datos de un país --"<<endl; cout<<endl<<"Digita el nombre del país a buscar: "; fflush(stdin); cin.getline(busPais, 50); idBus = buscarPais(busPais, &b2); //Guardando ID de pais buscado ptr_idBus = &idBus; //Asignando al puntero la dirección de la variable idBus if(b2 == 0){ //significa que la funcion buscar SI encontró el registro modificarPais(ptr_idBus); //Enviando el puntero como parámetro de la función } break; case 5: cout<<" -- Mensaje de la autora --"<<endl; cout<<"Un saludo desde El Salvador, les deseo éxitos y bendiciones"<<endl; cout<<" en el actual mundo del caos!!!!"<<endl; imprimirAut(autora); //Función que recibe una variable con dato constante <- y la convierte en un puntero que apunta a ese dato constante break; default: cout<<"ERROR: Opción inválida!!!"<<endl; break; } cout<<endl<<"Desea continuar en el programa S/N ?: "; cin>>conti; }while(conti=='s' || conti=='S'); //Después utilizar punteros es necesario liberar la memoria delete[] ptr_pais; delete[] ptr_preven; delete[] ptr_sintomas; delete[] ptr_idBus; return 0; } void registrarPais(){ cout<<"-- Registrar paises --"<<endl; for(int i=0; i<nMax_registros; i++){ fflush(stdin); cout<<i+1<<"- País: "; cin.getline(ptr_pais[i].nombre_pais, 50); cout<<" Cantidad de contagios: "; cin>>ptr_pais[i].contagios; if(ptr_pais[i].contagios>=0){ cout<<" Cantidad de recuperaciones: "; cin>>ptr_pais[i].recuperaciones; if(ptr_pais[i].recuperaciones < 0 || ptr_pais[i].recuperaciones > ptr_pais[i].contagios){ cout<<endl<<" ERROR: La cantidad de recuperados debe ser mayor o igual a cero"<<endl; cout<<" y menor o igual a la cantidad de contagios!!!"<<endl; break; } }else{ cout<<"MENSAJE: La cantidad de contagios no puede ser un número negativo!!!"<<endl; break; } } } void registrarPrevencion(){ cout<<"-- Registrar formas de prevención --"<<endl; for(int i=0; i<nMax_registros; i++){ fflush(stdin); cout<<i+1<<"- Título: "; cin.getline(ptr_preven[i].titulo, 50); cout<<" Descripción: "; cin.getline(ptr_preven[i].descripcion, 100); } } void registrarSintoma(){ cout<<"-- Registrar síntomas --"<<endl; for(int i=0; i<nMax_registros; i++){ fflush(stdin); cout<<i+1<<"- Síntoma: "; cin.getline(ptr_sintomas[i].sintoma, 100); cout<<" Gravedad (puntaje del 1 al 5): "; cin>>ptr_sintomas[i].gravedad; if(ptr_sintomas[i].gravedad <1 || ptr_sintomas[i].gravedad > 5){ cout<<" ERROR: El nivel de gravedad debe estar entre 1 y 5!!!"<<endl; break; } } } void verPais(){ cout<<endl<<"Paises registrados:--------------"<<endl; for(int i=0; i<nMax_registros; i++){ fflush(stdin); cout<<i+1<<"- País: "<<ptr_pais[i].nombre_pais<<endl; cout<<" "<<"Contagios: "<<ptr_pais[i].contagios<<endl; cout<<" "<<"Recuperaciones: "<<ptr_pais[i].recuperaciones<<endl; } } void verPrevencion(){ cout<<endl<<"Formas de prevención:--------------"<<endl; for(int i=0; i<nMax_registros; i++){ fflush(stdin); cout<<i+1<<"- "<<ptr_preven[i].titulo<<": "; cout<<ptr_preven[i].descripcion<<endl; } } void verSintoma(){ cout<<endl<<"Síntomas:--------------"<<endl; for(int i=0; i<nMax_registros; i++){ fflush(stdin); cout<<i+1<<"- Síntoma: "<<ptr_sintomas[i].sintoma<<endl; cout<<" Nivel de gravedad: "<<ptr_sintomas[i].gravedad<<endl; } } void imprimirAut(const char *ptrA){ //El puntero *ptrA esta apuntando a la cadena constante de autora[]="Raquel Medina" en la posición CERO //No se coloca inicialización en el FOR porque el puntero ya apunta a la posición inicial autora[0], //dejará de imprimir hasta que encuentre el caracter nulo que hay al final del arreglo char autora[] for( ; *ptrA!='\0'; ptrA++){ cout << *ptrA; } cout<<endl; } int buscarPais(char buscarP[], int *ptr_b2){ //*ptr_b2 es usada cuando se modifica int b=0, res=0, aux=0; for(int i=0; i<nMax_registros; i++){ fflush(stdin); res = strcmp(ptr_pais[i].nombre_pais, buscarP); //strcmp() compara 2 cadenas if(res == 0){ aux=i; //Guardando el ID del país buscado para ser usado cuando se quiera modificar los datos de dicho país cout<<endl<<"MENSAJE: Registro encontrado con éxito ---"<<endl; cout<<i+1<<"- País: "<<ptr_pais[i].nombre_pais<<endl; cout<<" "<<"Contagios: "<<ptr_pais[i].contagios<<endl; cout<<" "<<"Recuperaciones: "<<ptr_pais[i].recuperaciones<<endl; b = 1; } } if(b == 0){ *ptr_b2 = 1; //Uso es puntero porque en C++ no se puede retornar 2 valores, y debo saber si el dato buscado NO SE ENCUENTRA cout<<endl<<"MENSAJE: No se encontraron registros!!!"<<endl; } b = 0; return aux; } int buscarRecuperados(int buscarR, int *ptr_b2){ int b=0, aux=0; for(int i=0; i<nMax_registros; i++){ fflush(stdin); if(ptr_pais[i].recuperaciones == buscarR){ aux=i; //Guardando el ID para ser usado cuando se quiera modificar los datos de dicho país cout<<endl<<"MENSAJE: Registro encontrado con éxito ---"<<endl; cout<<i+1<<"- País: "<<ptr_pais[i].nombre_pais<<endl; cout<<" "<<"Contagios: "<<ptr_pais[i].contagios<<endl; cout<<" "<<"Recuperaciones: "<<ptr_pais[i].recuperaciones<<endl; b = 1; } } if(b == 0){ *ptr_b2 = 1; //Uso es puntero porque en C++ no se puede retornar 2 valores, y debo saber si el dato buscado NO SE ENCUENTRA cout<<endl<<"MENSAJE: No se encontraron registros!!!"<<endl; } b = 0; return aux; } void modificarPais(int *ptr_idBus){ //Uso de puntero como parámetro de una función, en la cual se trabaja con el valor del puntero cout<<endl<<"- País: "; cin.getline(ptr_pais[*ptr_idBus].nombre_pais, 50); cout<<" Cantidad de contagios: "; cin>>ptr_pais[*ptr_idBus].contagios; if(ptr_pais[*ptr_idBus].contagios>=0){ cout<<" Cantidad de recuperaciones: "; cin>>ptr_pais[*ptr_idBus].recuperaciones; if(ptr_pais[*ptr_idBus].recuperaciones < 0 || ptr_pais[*ptr_idBus].recuperaciones > ptr_pais[*ptr_idBus].contagios){ cout<<endl<<" ERROR: La cantidad de recuperados debe ser mayor o igual a cero"<<endl; cout<<" y menor o igual a la cantidad de contagios!!!"<<endl; exit(1);// No puedo usar break; porque la isntruccion no está dentro de un FOR ni un SWITCH } }else{ cout<<"MENSAJE: La cantidad de contagios no puede ser un número negativo!!!"<<endl; exit(1); } cout<<"MENSAJE: País modificado con éxito"<<endl; }

Compiling Program...

Command line arguments:
Standard Input: Interactive Console Text

                

                

Program is not being debugged. Click "Debug" button to start program in debug mode.

#FunctionFile:Line
VariableValue
RegisterValue
ExpressionValue