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
Código
#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
Código
LibroCalificaciones.cpp
#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; };
Código
#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; }