Witam,
Były już tematy o rozpoznawaniu pojedynczych samogłosek z tekstu, ja jednak mam takie zadanie (przerabiam podręcznik).
Cytuję..
Napisz program wczytujący dane wejściowe aż do wpisania pojedynczej litery q. Program ma pokazać liczbę słów zaczynajacych się od samogłosek, od spółgłosek i niezaliczonych do żadnej z tych kategorii.
Tak na szybko się za to porwałem bo chcę już przejść do następnego rozdziału, ale ..
#include <iostream>
#include <cctype>
int main(){
using std::cin;
using std::cout;
using std::endl;
char znak;
int samoG=0, spoL=0, inne=0;
cin.get(znak); //pobieram pierwszy znak
while(znak != 'q'){
if(isalpha(znak)){
switch(znak){
case 'a':
case 'e':
case 'i':
case 'o':
case 'u':
case 'y':
samoG++;
break;
default: spoL++;
}
}
if(!isspace(znak) && znak != '\n')
inne++;
while(!isspace(znak))
cin.get(znak);
cin.get(znak);
}
cout<<samoG<<" "<<spoL<<" "<<inne<<endl;
return 0;
}
Samogłoski i spółgłoski działają zgodnie z założeniem, lecz "wyraz" (ciąg znaków aż do białego znaku zaczynajacy się od znaku innego niż litera) działa nieprawidłowo. W zdaniach zbyt dużo ich nalicza. Błąd jest tu:
if(!isspace(znak) && znak != '\n')
inne++;
Przykładowo po wpisaniu:
andrzej ma psa o imieniu yetti. ma juz 5 lat. q
wynikiem jest 4 5 10
Może ma ktoś pomysł jak to naprawić? :)