Hola gente, tengo unas dudas con un switch y quisiera saber como hacer para que al ingresar eof (ctrl + z en windows, ctrl + d en linux) no se me cierre el programa y se ejecuten las otras funciones miembro.
Mi duda del switch es la siguiente en la funcion miembro recibirCalificaciones
si se ingresa por ejemplo " a" (espacio,y letra a), toma calificacion como "a", y quisiera saber por que, porque creo yo que tendria que entrar en default y no, se que evita los saltos de lineas, espacios y espacios tabulares, pero quisiera saber que pasa en ese cuerpo cuando tenemos un espacio y letra a.
Desde ya muchas gracias y Saludos!
Bueno este es el código:
main.cpp#include <iostream>
using std::cin;
#include "LibroCalificaciones.h"
int main()
{
LibroCalificaciones miLibroCalificaciones("CS101 Programacion en C++");
miLibroCalificaciones.mostrarMensaje();
miLibroCalificaciones.recibirCalificaciones();
miLibroCalificaciones.mostrarReporteCalificaciones();
cin.get();
return 0;
}
LibroCalificaciones.h#include <string>
using std::string;
class LibroCalificaciones
{
public:
LibroCalificaciones(string);
void establecerNombreCurso(string);
string obtenerNombreCurso();
void mostrarMensaje();
void recibirCalificaciones();
void mostrarReporteCalificaciones();
private:
string nombreCurso;
int aCuenta;
int bCuenta;
int cCuenta;
int dCuenta;
int fCuenta;
};
LibroCalificaciones.cpp#include <iostream>
using std::cout;
using std::cin;
using std::endl;
#include "LibroCalificaciones.h"
//CONSTRUCTOR
LibroCalificaciones::LibroCalificaciones(string nombre)
{
establecerNombreCurso(nombre);
aCuenta=0;
bCuenta=0;
cCuenta=0;
dCuenta=0;
fCuenta=0;
}
void LibroCalificaciones::establecerNombreCurso(string nombre)
{
if (nombre.length() <= 25)
{
nombreCurso= nombre;
}
else
{
nombreCurso= nombre.substr(0,25);
cout <<"el nombre " <<nombre <<" excede la longitud maxima (25).\n"
<<"Se limito nombreCurso a los primeros 25 caracteres.\n";
}
}
string LibroCalificaciones::obtenerNombreCurso()
{
return nombreCurso;
}
void LibroCalificaciones::mostrarMensaje()
{
cout <<"Bienvenido al libro de calificaciones para " <<obtenerNombreCurso() <<"!\n";
}
void LibroCalificaciones::recibirCalificaciones()
{
int calificacion;
cout <<"Escriba las calificaciones de letra." <<endl
<<"Escriba el caracter EOF (fin de archivo) para terminar la entrada." <<endl;
while ((calificacion= cin.get()) != EOF)
{
switch (calificacion)
{
case 'A':
case 'a':
aCuenta++;
break;
case 'B':
case 'b':
bCuenta++;
break;
case 'C':
case 'c':
cCuenta++;
break;
case 'D':
case 'd':
dCuenta++;
break;
case 'F':
case 'f':
fCuenta++;
break;
case '\t':
case '\n':
case ' ':
break;
default:
cout <<"Se introdujo una letra de calificacion incorrecta."
<<"Escriba una nueva calificacion." <<endl;
break;
}
}
}
void LibroCalificaciones::mostrarReporteCalificaciones()
{
cout <<"\n\nNumero de estudiantes que recibieron cada Calificacion de letra:"
<<"\nA: " <<aCuenta
<<"\nB: " <<bCuenta
<<"\nC: " <<cCuenta
<<"\nD: " <<dCuenta
<<"\nF: " <<fCuenta
<<endl;
}