C++ problem z wyswietlaniem kolejno po sobie
Ostatnio zmodyfikowano 2016-05-09 22:45
Poczatkujacy1 Temat założony przez niniejszego użytkownika |
C++ problem z wyswietlaniem kolejno po sobie » 2016-05-09 19:59:36 Witam,
Ucze sie podstaw C++, mam problem z nizej opisanym zadaniem, mimo udzielonej na koncu podpowiedzi. Robie cos zle, najpewniej robiac jakis podstawowy blad, Czy moge liczyc na poprawiony kod w odpowiedzi, lub jeszcze bardziej precyzyjna rade. Dzieki !
Tresc zadania:
Wczytywać znaki (zmienne typu char) pojedynczo (znak po znaku) aż pierwszy lub drugi wczytany znak powtórzą się dwa razy. Wydrukować informację:
a) których znaków wczytano więcej: małych liter czy cyfr (lub informację, że było ich tyle samo)
b) ile razy dwa średniki stały obok siebie (tzn. wczytano kolejno po sobie dwa średniki).
moja proba: http://wklej.org/id/2381151/
Podpowiedz mi udzielona:
"ogolnie jest dobrze, pojawiają się problemy, jeśli jako jeden z pierwszych znaków wpisany jest średnik (np a ; a a - wyświetla jedno wystąpienie średników po sobie).
przemysl warunki (tylko jeden jest potrzebny):
if (check1 != ';'&& check2 !=';') {licznik = 0;} else if (check1 == ';'&& check2 !=';') {licznik = 0;} else if (check1 == ';'&& check2 ==';') {licznik = 2;} else if (check1 != ';'&& check2 ==';') {licznik = 1;}
oraz ustawienie wartości zmiennej akt_znak przed pętlą while." |
|
carlosmay |
» 2016-05-09 22:45:29 Wstawiaj kod formatowany w znacznikach i na forum, a nie odnośniki do stron. ogolnie jest dobrze, pojawiają się problemy, jeśli jako jeden z pierwszych znaków wpisany jest średnik |
To nie jest dobrze. przemysl warunki (tylko jeden jest potrzebny): |
Raczej jeden nie wystarczy. { char ch; bool flag = false; int digits = 0; int alphas = 0; int double_semicolons = 0; while( std::cin.get( ch ) && ch != '\n' ) { if( ch >= 'a' && ch <= 'z' ) { ++alphas; flag = false; } else if( ch >= '0' && ch <= '9' ) { ++digits; flag = false; } else if( ch == ';' ) { if( flag == false ) flag = true; else { ++double_semicolons; flag = false; } } else { flag = false; } } } |
|
« 1 » |