Zliczanie samogłosek i spółgłosek.
Ostatnio zmodyfikowano 2017-07-05 22:36
Bercik97 Temat założony przez niniejszego użytkownika |
Zliczanie samogłosek i spółgłosek. » 2017-07-03 19:22:01 Witam, mam problem z zadaniem z książki. Muszę napisać program który zlicza ile jest słów które zaczynają się od spółgłosek, samogłosek i które nie zaliczają się do żadnych z tych dwóch kategorii. No i że litera ' q ' kończy program. Napisałem taki kod : #include <iostream> #include <cctype> #include <cstdlib>
using namespace std;
char ch; int samogloska = 0, spolgloska = 0, nienalerzy = 0;
int main() { cout << "Napisz cos. Litera 'q' konczy program. \n"; while(( cin.get( ch ) ) &&(( ch != 'q' ) &&( ch != 'Q' ) ) ) { if( isalpha( ch ) ) { if( ch != 'a' && ch != 'e' && ch != 'i' && ch != 'o' && ch != 'y' && ch != 'u' ) spolgloska++; else samogloska++; } else nienalerzy++; } cout << spolgloska << " slow zaczynajacych sie od spolglosek.\n"; cout << samogloska << " slow zaczynajacych sie od samoglosek.\n"; cout << nienalerzy << " slow nie zalicza sie do zadnej z tych kategorii.\n"; system( "PAUSE" ); return 0; }
Program zamiast podawać ile słów zaczyna się od tego i tego, to pokazuje mi ile jest ogólnie spółgłosek i samogłosek. Jak to zrobić ? |
|
maly7 |
» 2017-07-03 19:58:18 No bo liczysz każdy znak i sprawdzasz czy jest spolgloska czy nie i inkrementujesz zmienne. Przeanalizuj cały kod i zastanów się jak działa. Musisz sprawdzać jakoś całe słowa. Możesz sprawdzać litery i sprawdzać czy wystapiła ' ' (spacja) lub np. \n albo działac na stringach. |
|
Bercik97 Temat założony przez niniejszego użytkownika |
» 2017-07-03 20:23:34 Dodałem takie coś na początku pętli while if( ch == ' ' ) continue;
if( ch == '\n' ) continue;
Program nie zlicza mi już spacji i nowych linijek ale dalej nie mam pojęcia jak zrobić żeby nie liczył mi tych liter tylko literę od której zaczyna się słowo :( |
|
mateczek |
» 2017-07-03 20:35:56 #include <iostream> #include <string> using namespace std;
int main() { std::string wyraz; int licznik = 0; while( cin >> wyraz, wyraz != "Q" ) { if( wyraz[ 0 ] = 'a' ) licznik++; } cout << licznik; } |
|
Bercik97 Temat założony przez niniejszego użytkownika |
» 2017-07-03 20:42:02 Dzięki ! |
|
Bercik97 Temat założony przez niniejszego użytkownika |
» 2017-07-04 20:53:19 Dopiero wziąłem się za ten kod bo wcześniej nie było czasu, siedziałem trochę i wszystko jest git, program zlicza zdania zaczynające się od samogłosek i spółgłosek ale nie zlicza mi tych znaków które nie należą? Jak to zrobić ? Ktoś coś jakaś pomoc, oto mój kod: #include <iostream> #include <cctype> #include <cstdlib> #include <string>
using namespace std;
string wyraz; int samogloska = 0, spolgloska = 0, nienalerzy = 0;
int main() { cout << "Napisz cos. Litera 'q' konczy program. \n"; while( cin >> wyraz &&(( wyraz != "q" ) &&( wyraz != "Q" ) ) ) { if( wyraz == " " ) continue; if( wyraz == "\n" ) continue; { if( wyraz[ 0 ] == 'a' || wyraz[ 0 ] == 'e' || wyraz[ 0 ] == 'i' || wyraz[ 0 ] == 'o' || wyraz[ 0 ] == 'y' || wyraz[ 0 ] == 'u' ) samogloska++; else if( true ) { spolgloska++; } else nienalerzy++; } } cout << spolgloska << " slow zaczynajacych sie od spolglosek.\n"; cout << samogloska << " slow zaczynajacych sie od samoglosek.\n"; cout << nienalerzy << " slow nie zalicza sie do zadnej z tych kategorii.\n"; system( "PAUSE" ); return 0; }
|
|
mateczek |
» 2017-07-04 21:14:56 jeśli masz analizować pierwsze litery wyrazów to spacje między wyrazami raczej nie powinny Cię interesować ?? if( wyraz == " " ) continue;
if( wyraz == "\n" ) continue;
jeśli wyraz zaczyna się od cyfry czy znaku specjalnego dopisz if( wyraz[ 0 ] == 'a' || wyraz[ 0 ] == 'e' || wyraz[ 0 ] == 'i' || wyraz[ 0 ] == 'o' || wyraz[ 0 ] == 'y' || wyraz[ 0 ] == 'u' ) samogloska++; else if( wyraz[ 0 ] >= 'a' && wyraz[ 0 ] <= 'z' ) { spolgloska++; } else nienalerzy++;
|
|
Bercik97 Temat założony przez niniejszego użytkownika |
» 2017-07-04 21:37:54 Działa, tylko nie rozumiem o co chodzi z tym warunkiem else if( wyraz[ 0 ] >= 'a' && wyraz[ 0 ] <= 'z' )
|
|
« 1 » 2 |