[C con Clase] X-files en c++

Juan jmicanovelles en gmail.com
Mar Oct 14 19:35:36 CEST 2008


Despues del scanf
fflush(stdin) limpia el buffer de entrada
Es otra de las posibilidades.

Juan






El pasado 2008-10-14 00:20:40, David Barragán Merino escribió:
 
DBM> Hola listeros,
DBM> tratando de enseñar C++ me ha pasado un caso muy extraño:
DBM> ///codigo:
DBM> include <stdio.h>
DBM> int main(){
DBM>     // Para controlar las iteraciones.
DBM>     int i;
DBM>     // Para contar el numero de vocales.
DBM>     int vocales = 0;
DBM>     // Para guardar los caracteres que se leen por teclado.
DBM>     char caracter;
DBM>     // Repetir 10  veces (desde que i = 0, mientras i < 10)
DBM>     for (i = 0; i < 10; i++){
DBM>         // Imprimir
DBM>         printf("Introduzca el caracter %i:\t", i + 1);
DBM>         // Leemos un caracter
DBM>         scanf("%c", &caracter);
DBM>         // si el caracter leido es a,e,i,o,u,A,E,I,O,U
DBM>         if (caracter == 'a' || caracter == 'A' || caracter == 'e' ||
DBM> caracter == 'E' || caracter == 'i' || caracter == 'I' || caracter ==
DBM> 'o' || caracter == 'O' || caracter == 'u' || caracter == 'U'){
DBM>             // Aumentamos en 1 el numero de vocales
DBM>             vocales++;
DBM>         } // fin if
DBM>     } // fin for
DBM>     // Imprimimos numero de vocales
DBM>     printf("- Numero de Vocales: %i\n", vocales);
DBM>     // Imprimimos numero de no vocales (10 - vocales)
DBM>     printf("- Numero de Otros caracteres: %i\n", 10 - vocales);
DBM> } // fin main
DBM> Este código da error:
DBM> $ ./prueba
DBM> Introduzca el caracter 1:       a
DBM> Introduzca el caracter 2:       Introduzca el caracter 3:       e
DBM> Introduzca el caracter 4:       Introduzca el caracter 5:       i
DBM> Introduzca el caracter 6:       Introduzca el caracter 7:       o
DBM> Introduzca el caracter 8:       Introduzca el caracter 9:       u
DBM> Introduzca el caracter 10:      - Numero de Vocales: 5
DBM> - Numero de Otros caracteres: 5
DBM> en cambio
DBM> ///codigo
DBM> #include <stdio.h>
DBM> int main(){
DBM>     // Para controlar las iteraciones.
DBM>     int i;
DBM>     // Para contar el numero de vocales.
DBM>     int vocales = 0;
DBM>     // Para guardar los caracteres que se leen por teclado.
DBM>     char caracter;
DBM>     // Repetir 10  veces (desde que i = 0, mientras i < 10)
DBM>     for (i = 0; i < 10; i++){
DBM>         // Imprimir
DBM>         printf("Introduzca el caracter %i:\t", i + 1);
DBM>         // Leemos un caracter
DBM>         scanf("%c", &caracter);
DBM>         // si el caracter leido es a,e,i,o,u,A,E,I,O,U
DBM>         if (caracter == 'a' || caracter == 'A' || caracter == 'e' ||
DBM> caracter == 'E' || caracter == 'i' || caracter == 'I' || caracter ==
DBM> 'o' || caracter == 'O' || caracter == 'u' || caracter == 'U'){
DBM>             // Aumentamos en 1 el numero de vocales
DBM>             vocales++;
DBM>         } // fin if
DBM>         scanf("%c", &caracter); //Leemos el ENTER
DBM>     } // fin for
DBM>     // Imprimimos numero de vocales
DBM>     printf("- Numero de Vocales: %i\n", vocales);
DBM>     // Imprimimos numero de no vocales (10 - vocales)
DBM>     printf("- Numero de Otros caracteres: %i\n", 10 - vocales);
DBM> } // fin main
DBM> este no:
DBM> $ ./prueba
DBM> Introduzca el caracter 1:       a
DBM> Introduzca el caracter 2:       e
DBM> Introduzca el caracter 3:       i
DBM> Introduzca el caracter 4:       o
DBM> Introduzca el caracter 5:       u
DBM> Introduzca el caracter 6:       q
DBM> Introduzca el caracter 7:       q
DBM> Introduzca el caracter 8:       q
DBM> Introduzca el caracter 9:       q
DBM> Introduzca el caracter 10:      q
DBM> - Numero de Vocales: 5
DBM> - Numero de Otros caracteres: 5
DBM> Alguien sabe como puedo corregir el primer código sin añadir
DBM> "scanf("%c", &caracter); //Leemos el ENTER"???
DBM> Gracias
DBM> ____________________________________________
DBM> |
DBM> |    David Barragán Merino
DBM> |    E-mail: bameda en ARROBA@gmail.com
DBM> |    Ingeniería Informática
DBM> |    Universidad Carlos III Madrid
DBM> |____________________________________________
DBM> _______________________________________________
DBM> Lista de correo Cconclase Cconclase en listas.conclase.net
DBM> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
DBM> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ


Más información sobre la lista de distribución Cconclase