Strona 1 z 1

C++ bardzo prosty program z niewiadomym błędem

: 21 gru 2009, 14:51
autor: lyrix
Witam Forumowiczów!

Mam taki problem, mianowicie napisałem prościutki programik obliczający, ile jest samogłosek w ciągu podanych po sobie 4 liter. Program wygląda tak:

Kod: Zaznacz cały

# include <cstdio>

using namespace std;

int main() {

    char c;
    int ile;
    ile = 0;

    scanf("%c", &c);
    if ((c == 'a') || (c == 'e') || (c == 'i') || (c == 'o') || (c == 'u') || (c == 'y'))
    ile = ile + 1;  
    
    scanf("%c", &c);
    if ((c == 'a') || (c == 'e') || (c == 'i') || (c == 'o') || (c == 'u') || (c == 'y'))
        ile = ile+1;

    scanf("%c", &c);
    if ((c == 'a') || (c == 'e') || (c == 'i') || (c == 'o') || (c == 'u') || (c == 'y'))
        ile = ile + 1;

    scanf("%c", &c);
    if ((c == 'a') || (c == 'e') || (c == 'i') || (c == 'o') || (c == 'u') || (c == 'y'))
        ile = ile + 1;

    printf("%d\n", ile);

    return 0;
}
Program jest taki, że po skompilowaniu programu, program daje sobie wczytać tylko 2 litery, po czym nie czekając na wprowadzenie pozostałych dwóch wypisuje wynik. Próbowałem z 4 zmiennymi char i robi to samo. Z 3 literami też. Z dwiema literami podobny błąd, bo wypisuje wynik już po jednej.

Czy ktoś wie moze, jaki to może być błąd? Czy może z kompilatorem jest coś nie tak (gcc).

Z góry dzięki za podpowiedź.

pozdrawiam

Odp: C++ bardzo prosty program z niewiadomym błędem

: 21 gru 2009, 15:02
autor: dawwin
Problem występuje, ponieważ pod uwagę brany jest też [enter]. Wpisz sobie wszystkie 4 znaki bez entera i dopiero zatwierdź. Problem by nie występował, gdybyś użył c = getch(). Tylko musisz sobie poszukać w necie tej funkcji i ją dokleić do kodu, bo w gcc jej domyślnie nie ma

Odp: C++ bardzo prosty program z niewiadomym błędem

: 21 gru 2009, 16:30
autor: lyrix
Dzięki! Jestem początkującym programistą i prawdopodobnie długo nie wpadłbym na to rozwiązanie.

pozdrawiam

Odp: C++ bardzo prosty program z niewiadomym błędem

: 22 gru 2009, 19:29
autor: Razi
najlepiej łopatologicznie debuggować, tzn. w tym wypadku wypisać każdy wczytany znak (kod ASCI)