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

Bash, C, C++, Java, PHP, Ruby, GTK, Qt i wiele innych - wszystko tutaj.
lyrix
Piegowaty Guziec
Piegowaty Guziec
Posty: 14
Rejestracja: 03 lip 2008, 15:11
Płeć: Mężczyzna
Wersja Ubuntu: 8.04
Środowisko graficzne: GNOME
Kontakt:

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

Post 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
Awatar użytkownika
dawwin
Serdeczny Borsuk
Serdeczny Borsuk
Posty: 202
Rejestracja: 18 kwie 2009, 09:16
Płeć: Mężczyzna
Wersja Ubuntu: 11.04
Środowisko graficzne: GNOME
Architektura: x86
Kontakt:

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

Post 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
lyrix
Piegowaty Guziec
Piegowaty Guziec
Posty: 14
Rejestracja: 03 lip 2008, 15:11
Płeć: Mężczyzna
Wersja Ubuntu: 8.04
Środowisko graficzne: GNOME
Kontakt:

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

Post autor: lyrix »

Dzięki! Jestem początkującym programistą i prawdopodobnie długo nie wpadłbym na to rozwiązanie.

pozdrawiam
Razi
Serdeczny Borsuk
Serdeczny Borsuk
Posty: 150
Rejestracja: 20 paź 2007, 16:23
Płeć: Mężczyzna
Wersja Ubuntu: 11.04
Środowisko graficzne: KDE Plasma
Kontakt:

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

Post autor: Razi »

najlepiej łopatologicznie debuggować, tzn. w tym wypadku wypisać każdy wczytany znak (kod ASCI)
ODPOWIEDZ

Wróć do „Programowanie”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 12 gości