[ Foro de C++ ]
/*
Tengo muchos problemas para hacer funcionar mi programa, soy nuevo con C++, muchas cosas las sabía hacer en C, pero no programo hace 6 años, la realidad es que volví a tomar interés hace dos días porque mi amiga necesita ayuda para exámenes en una semana... estoy haciendo este programa para tomar apellidos de alumnos y hacer un trabajo con sus promedios, pero no puedo alcanzar a revisar la funcionalidad porque lo hice de 5 maneras diferentes y siempre hay dramas con esta función cin.getline. Alguien que me pueda orientar? o que quiera sea buena onda para responder consultitas situacionales por zoom/discord/meet?
Si bien empecé a practicar por mi amiga, me volvió a interesar.
*/
#include <iostream>
#include <string.h>
#include <conio.h>
#include <stdlib.h>
using namespace std;
int reviso_apellido (char *);
int reviso_promedio (float);
int func_seguir (void);
int main ()
{
int gente, contador=0, name_ok, prom_ok, cod_err, sigue_ok=1, FF=0, GG=0;
float promedio=0, max_prom=0.5, min_prom=11;
char apellido[30], mayor_prom[30], menor_prom[30], seguimos[2];
cout << "Ingrese Cantidad de Alumnos: " << endl;
cin >> gente;
do {
cout << "Ingrese Apellido:" << endl; cin.getline (apellido,30,'\n');
cout << "Ingrese Promedio:" << endl; cin >> promedio;
name_ok= reviso_apellido (apellido); prom_ok= reviso_promedio (promedio);
cod_err= name_ok*10+prom_ok;
if (cod_err==00) {cout << "// Error de los Datos //" << endl; contador--; break;}
if (cod_err==01) {cout << "// Error en el Nombre //" << endl; contador--; break;}
if (cod_err==10) {cout << "// Error en Promedio //" << endl; contador--; break;}
if (promedio>max_prom) {max_prom=promedio; strcpy(mayor_prom,apellido);}
if (promedio<min_prom) {min_prom=promedio; strcpy(menor_prom,apellido);}
if (promedio>=6) GG++;
else FF++;
if (!func_seguir())
{
cout << "~ ~ ~ ESTATUS DE INGRESOS ~ ~ ~" << endl;
cout << "MAYOR PROMEDIO: " << mayor_prom << " (" << max_prom << ")" << endl;
cout << "MENOR PROMEDIO: " << menor_prom << " (" << min_prom << ")" << endl;break;
}
contador++;
} while (contador<gente);
return 0;
}
int reviso_apellido (char *cad)
{
int i;
int a=1;
for (i=0; i<30 && a==1; i++) { if (cad[i]<'65' && cad[i]!='32' || cad[i]>'90' && cad[i]<'97' || cad[i]>'122') a=0;}
return a;
}
int reviso_promedio (float num)
{
if (num<1 || num>10) return 0;
return 1;
}
int func_seguir (void)
{
char opcion[2];
cout << "?? Continuar con el ingreso? " << endl; cin.getline (opcion,2,'\n');
if (!strcmp(opcion,"SI")) return 1;
if (!strcmp(opcion,"NO")) return 0;
return func_seguir();
}
(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)