Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Que está mal???

Estas en el tema de Que está mal??? en el foro de C/C++ en Foros del Web. Hola!!! Estoy haciendo un programa de promedio de calificaciones, las calificaciones se ingresan con caracteres (a, b, c, d..).. cada una tiene su equivalente en ...
  #1 (permalink)  
Antiguo 18/11/2007, 19:20
 
Fecha de Ingreso: noviembre-2007
Mensajes: 19
Antigüedad: 16 años, 6 meses
Puntos: 0
Información Que está mal???

Hola!!!

Estoy haciendo un programa de promedio de calificaciones, las calificaciones se ingresan con caracteres (a, b, c, d..).. cada una tiene su equivalente en numeros; hay que contar cuantas hay de cada una y luego sacar el promedio de la clase...

El problema es que se debe parar el ingreso de registros ingresando un centinel (EOF)... CUANDO ingrese ese caracter debe empezar a calcular el promedio y desplegarlo.. pero no hace eso si no que me dice que eta mal ingresado el caracter y que ingrese otro... Por fa.. se los agradecería mucho!!

#include <iostream>

using std::cout;
using std::cin;
using std::endl;


int main()
{
int calificacion; // una calificación
int aContador = 0; // número de As
int bContador = 0; // número de Bs
int cContador = 0; // número de Cs
int dContador = 0; // número de Ds
int fContador = 0; // número de Fs
int atotal;
int btotal;
int ctotal;
int dtotal;
int ftotal;
double promedio;
int totaltotal;



cout << "Introduzca la calificacion con letra." << endl
<< "Introduzca el caracter EOF para terminar la entrada de datos." << endl;

// repite hasta que el usuario digite la secuencia de fin de archivo
while ( ( calificacion = cin.get() ) != EOF ) {

// determina qué calificación se introdujo
switch ( calificacion ) { // estructura switch anidada en un while

case 'A': // la calificación es una A mayúscula
case 'a': // o una a minúscula
++aContador; // incrementa aContador
break; // necesario para salir de switch

case 'B': // la calificación es una B
case 'b': // o una b minúscula
++bContador; // incrementa bContador
break; // sale de switch

case 'C': // la calificación es una C
case 'c': // o una c minúscula
++cContador; // incrementa cContador
break; // sale de switch

case 'D': // la calificación es una D
case 'd': // o una d minúscula
++dContador; // incrementa dContador
break; // sale de switch

case 'F': // la calificación es una F
case 'f': // o una f minúscula
++fContador; // incrementa fContador
break; // sale de switch

case '\n': // ignora nuevas líneas,
case '\t': // tabuladores,
case ' ': // y espacios en la entrada
break; // sale de switch

default: // atrapa todos los demás caracteres
cout << "Se introdujo una letra incorrecta."
<< "Introduzca una nueva letra." << endl;
break;

}





}


atotal= aContador * 10;
btotal= bContador * 9;
ctotal= cContador * 8;
dtotal= dContador * 7;
ftotal= fContador * 6;

totaltotal= aContador + bContador + cContador+dContador+fContador;


promedio = (atotal+btotal+ctotal+dtotal+ftotal)/totaltotal;

cout<<"El promedio de la clase es: "<<"\t"<<promedio<<endl;


return 0;

}
  #2 (permalink)  
Antiguo 19/11/2007, 06:56
Avatar de _Lucifer_  
Fecha de Ingreso: junio-2006
Mensajes: 1.662
Antigüedad: 17 años, 11 meses
Puntos: 28
Re: Que está mal???

¿Qué caracter estás ingresando como EOF?, es decir, ¿qué escribes o que teclas presionas para que finalice tu programa?

Porque en *nix es ctrl + D y en win es ctrl + Z

Saludos
__________________
Si crees que no tiene sentido, etonces probablemente lo tenga... :arriba:
  #3 (permalink)  
Antiguo 19/11/2007, 18:07
 
Fecha de Ingreso: noviembre-2007
Mensajes: 19
Antigüedad: 16 años, 6 meses
Puntos: 0
De acuerdo Re: Que está mal???

Gracias Lucifer... no sabía eso....!!!
  #4 (permalink)  
Antiguo 21/11/2007, 07:37
Avatar de _Lucifer_  
Fecha de Ingreso: junio-2006
Mensajes: 1.662
Antigüedad: 17 años, 11 meses
Puntos: 28
Re: Que está mal???

Cita:
Iniciado por mj_builder Ver Mensaje
Gracias Lucifer... no sabía eso....!!!
De nada
__________________
Si crees que no tiene sentido, etonces probablemente lo tenga... :arriba:
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:51.