[c++] String i białe znaki // getline .
Ostatnio zmodyfikowano 2016-12-11 08:34
Squashu Temat założony przez niniejszego użytkownika |
[c++] String i białe znaki // getline . » 2016-12-11 00:36:56 Witam, natknąłem się na mały problem w jednym z prostszych zadań jakie mam zrobić: Treść: Detektyw Paul Drake, prowadząc przeszukanie w mieszkaniu zatrzymanego przemytnika, znalazł pod dywanem karteczkę zapisaną dziwnymi symbolami. Podejrzewa, że może to być zaszyfrowana wiadomość dotycząca miejsca przechowywania przemycanego towaru. Zamierza przekazać ją specjalistom od kryptologii, ale postanowił sam przeprowadzić wstępną analizę. Na początek potrzebuje informacji o liczbie liter oraz cyfr w poszczególnych liniach tekstu. Wejście Pierwsza linia wejścia zawiera liczbę naturalną n (1<=n<=10), mówiącą, ile linii tekstu znajduje się na znalezionej karteczce. Następnie podane są kolejno te linie. Każda z nich może zawierać małe i duże litery alfabetu angielskiego, cyfry, znaki interpunkcyjne oraz spacje. Długość każdej linii wynosi co najmniej 1 i co najwyżej 30 znaków. Wyjście Dla każdej linii tekstu wypisz oddzielone spacjami trzy liczby, oznaczające kolejno liczbę wszystkich znaków w tej linii (wraz z spacjami), liczbę zawartych w niej liter oraz liczbę cyfr. #include <iostream>
int main() { int a, leng, x, y; std::cin >> a; std::cin.sync(); std::string wyraz; for( int i = 0; i < a; i++ ) { std::getline( std::cin, wyraz ); leng = wyraz.length(); x = y = 0; for( int j = 0; j < leng; j++ ) { if(( wyraz[ j ] >= '0' ) &&( wyraz[ j ] <= '9' ) ) { y++; } else if((( wyraz[ j ] >= 'a' ) &&( wyraz[ j ] <= 'z' ) ) ||(( wyraz[ j ] >= 'A' ) &&( wyraz[ j ] <= 'Z' ) ) ) { x++; } } std::cout << leng << " " << x << " " << y << std::endl; } return 0; }
Zadbałem o czyszczenie bufora; użyłem getlina, żeby string "zbierał" białe znaki. Chciałbym zrozumieć, gdzie popełniłem błąd. Prosiłbym jedynie o wskazanie gdzie tkwi problem, kod chciałbym poprawić sam. Dziękuje za pomoc. |
|
mateczek |
» 2016-12-11 06:56:58 jeśli to jest zadanie na sprawdzarkę automatyczną to nie czyścisz strumienia. Skoro napisane jest, że w pierwszej Lini jest cyfra to znaczy że jest!!! jedynie po pobraniu liczby użyć cin.ignore() lub coś podobnego by pozbyć się znaku końca linii |
|
Squashu Temat założony przez niniejszego użytkownika |
» 2016-12-11 08:34:44 Faktycznie.... Strasznie głupi błąd, że też tego wcześniej nie zauważyłem. Już poprawione, wszystko działa. Dzięki, zamykam temat. |
|
« 1 » |