Problema con EOF

Iniciado por Mario Olivera, 30 Agosto 2014, 17:56 PM

0 Miembros y 1 Visitante están viendo este tema.

Mario Olivera

 Hola gente del foro, tengo un problema con un programa que al intentar construirlo me tire el error de que EOF no ha sido declarado :

Citar /home/alumno/Escritorio/Proyectos C++/practicas/libroCalificaciones.cpp||In member function 'void libroCalificaciones::recibirCalificaciones()':|
/home/alumno/Escritorio/Proyectos C++/practicas/libroCalificaciones.cpp|48|error: 'EOF' was not declared in this scope|
||=== Build finished: 1 errors, 0 warnings ===|

Les dejo la parte del código donde uso EOF, por las dudas trabajo en linux

Código (cpp) [Seleccionar]
void libroCalificaciones::recibirCalificaciones()
{
   int calificacion;
   cout <<"Escriba las calificaciones de letra." <<endl
        <<"Escriba el caracter EOF para terminar la entrada." <<endl;

        while ((calificacion= cin.get()) != EOF)
        {
            switch (calificacion)
            {
                case 'A':
                case 'a':
                aCuenta++;
                break;

                case 'B':
                case 'b':
                dCuenta++;
                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 tecla de calificacion incorrecta."
                     <<" Escribe una nueva calificacion." <<endl;
                break;

            }
        }
}


Disculoen las molestias, saludos! :)

rir3760

Antes de utilizar la macro EOF debes incluir el encabezado <cstdio>.

Un saludo
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language

flony

por las dudas las lineas 18 y 28 son identicas no deberian ser distintas ?
si un problema no tiene solucion entonces no es un problema...es algo inevitable

ecfisa

Hola.

Una sugerencia, para reducir tu código:
Código (cpp) [Seleccionar]

...
#include <locale>
...

 while ((calificacion= cin.get()) != EOF) {
   switch (toupper(calificacion)) {
     case 'A' :
       aCuenta++;
     break;
...


Saludos.

6666

while ((calificacion= cin.get()) != ' ') o while ((calificacion= cin.get()) != ' ')

tambien creo

while ((calificacion= cin.get()) != '0x0A')

o

while ((calificacion= cin.get()) != '\n')

Mario Olivera

Cita de: rir3760 en 30 Agosto 2014, 18:01 PM
Antes de utilizar la macro EOF debes incluir el encabezado <cstdio>.

Un saludo

Muchas Gracias rir3760 por tu ayuda, pude sulocionar el problema,  ;-)

Cita de: flony en 30 Agosto 2014, 18:01 PM
por las dudas las lineas 18 y 28 son identicas no deberian ser distintas ?

Si flony! muchas gracias!  ;-)
Cita de: ecfisa en 30 Agosto 2014, 18:01 PM
Hola.


Una sugerencia, para..
Cita de: 6666 en 30 Agosto 2014, 18:01 PM
while ((calificacion= cin.get()) != ' ') o while ((calificacion= cin.get()) != ' ')

El código esta en un libro no lo programe yo :S


Saludos a todos ;D