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

bameda bameda en gmail.com
Mar Oct 14 02:20:40 CEST 2008


Hola listeros,

tratando de enseñar C++ me ha pasado un caso muy extraño:


///codigo:
include <stdio.h>


int main(){
    // Para controlar las iteraciones.
    int i;
    // Para contar el numero de vocales.
    int vocales = 0;
    // Para guardar los caracteres que se leen por teclado.
    char caracter;

    // Repetir 10  veces (desde que i = 0, mientras i < 10)
    for (i = 0; i < 10; i++){
        // Imprimir
        printf("Introduzca el caracter %i:\t", i + 1);
        // Leemos un caracter
        scanf("%c", &caracter);

        // si el caracter leido es a,e,i,o,u,A,E,I,O,U
        if (caracter == 'a' || caracter == 'A' || caracter == 'e' ||
caracter == 'E' || caracter == 'i' || caracter == 'I' || caracter ==
'o' || caracter == 'O' || caracter == 'u' || caracter == 'U'){
            // Aumentamos en 1 el numero de vocales
            vocales++;
        } // fin if

    } // fin for

    // Imprimimos numero de vocales
    printf("- Numero de Vocales: %i\n", vocales);
    // Imprimimos numero de no vocales (10 - vocales)
    printf("- Numero de Otros caracteres: %i\n", 10 - vocales);

} // fin main

Este código da error:
$ ./prueba
Introduzca el caracter 1:       a
Introduzca el caracter 2:       Introduzca el caracter 3:       e
Introduzca el caracter 4:       Introduzca el caracter 5:       i
Introduzca el caracter 6:       Introduzca el caracter 7:       o
Introduzca el caracter 8:       Introduzca el caracter 9:       u
Introduzca el caracter 10:      - Numero de Vocales: 5
- Numero de Otros caracteres: 5



en cambio

///codigo
#include <stdio.h>


int main(){
    // Para controlar las iteraciones.
    int i;
    // Para contar el numero de vocales.
    int vocales = 0;
    // Para guardar los caracteres que se leen por teclado.
    char caracter;

    // Repetir 10  veces (desde que i = 0, mientras i < 10)
    for (i = 0; i < 10; i++){
        // Imprimir
        printf("Introduzca el caracter %i:\t", i + 1);
        // Leemos un caracter
        scanf("%c", &caracter);

        // si el caracter leido es a,e,i,o,u,A,E,I,O,U
        if (caracter == 'a' || caracter == 'A' || caracter == 'e' ||
caracter == 'E' || caracter == 'i' || caracter == 'I' || caracter ==
'o' || caracter == 'O' || caracter == 'u' || caracter == 'U'){
            // Aumentamos en 1 el numero de vocales
            vocales++;
        } // fin if
        scanf("%c", &caracter); //Leemos el ENTER
    } // fin for

    // Imprimimos numero de vocales
    printf("- Numero de Vocales: %i\n", vocales);
    // Imprimimos numero de no vocales (10 - vocales)
    printf("- Numero de Otros caracteres: %i\n", 10 - vocales);

} // fin main

este no:
$ ./prueba
Introduzca el caracter 1:       a
Introduzca el caracter 2:       e
Introduzca el caracter 3:       i
Introduzca el caracter 4:       o
Introduzca el caracter 5:       u
Introduzca el caracter 6:       q
Introduzca el caracter 7:       q
Introduzca el caracter 8:       q
Introduzca el caracter 9:       q
Introduzca el caracter 10:      q
- Numero de Vocales: 5
- Numero de Otros caracteres: 5

Alguien sabe como puedo corregir el primer código sin añadir
"scanf("%c", &caracter); //Leemos el ENTER"???


Gracias
____________________________________________
|
|    David Barragán Merino
|    E-mail: bameda en ARROBA@gmail.com
|    Ingeniería Informática
|    Universidad Carlos III Madrid
|____________________________________________


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