Código:
El caso es que defino la variable calificación como un char para que en un momento dado, cuando dé al enter sin introducir ningún número se interrumpa el bucle while y me haga la media con los números que le haya dado (como veis, antes hago un cast pasando la variable calificacion de char a int, de manera que los números puedan sumarse.) Por ejemplo:#include <iostream> using namespace std; int main(){ char calificacion[1]; int suma = 0, iteracion=1; float promedio; while(calificacion[0]!='\n'){ calificacion[0] = (char)calificacion[0]; cout<<"\nTeclea tu calificacion "<<iteracion<<" : "; cin.get(); cin.get(calificacion,1,'\n'); calificacion[0] = (int)calificacion[0]; suma+=calificacion[0]; iteracion++; } promedio=(float)suma/(iteracion-1); cout<<"El promedio de calificaciones es: "<<promedio<<endl; cin.get(); system("PAUSE"); return 0; }
Teclea tu calificacion 1: 3
Teclea tu calificacion 2: 5
Teclea tu calificacion 3:
El promedio es: 4
Nótese que la tercera vez que me pide un valor doy enter para que termine el bucle while. Pues bien, en el momento en que introduzco el primer valor y le doy al enter, pasa lo siguiente:
Teclea tu calificacion 1: 3
Teclea tu calificacion 2:
Teclea tu calificacion 3:
Teclea tu calificacion 4:
Teclea tu calificacion 5:
... (y así hasta "infinito"):
Vamos, que empieza a "correr" la lista continuamente en lugar de esperar a que introduzca un número y dé al enter.
¿Dónde está el fallo?
P.D. Por cierto, la variable calificación la he definido en forma de array de manera que haya dos valores: el número y el valor '\n' (que es el que recibe del enter), en ese orden, de manera que el programa no termine cuando le doy al enter después de escribir un número. Notad que éste debe terminar cuando doy al enter sin escribir nada antes.