Program wypisujący wszystkie wyrazy, których pierwszy znak jest równy ostatniemu
Ostatnio zmodyfikowano 2018-03-01 10:24
szepix Temat założony przez niniejszego użytkownika |
Program wypisujący wszystkie wyrazy, których pierwszy znak jest równy ostatniemu » 2018-02-28 22:12:39 Witam, mam problem z poniższym zadaniem. Dla kilku pierwszych wyrazów działa bezproblemowo, jednak potem zaczynają się problemy i wyrazy nie pojawiają się. Napisz program wprowadzający z klawiatury tekst i wypisujący go w następujący sposób: wszystkie wyrazy wypisane w kolumnie wszystkie wyrazy, których pierwszy znak jest równy ostatniemu, wypisane w kolumnie#include <iostream> #include <cstdlib> #include <string> #include <algorithm> using namespace std;
int main() { string tekst; string wyrazy, a; cout << "Podaj tekst: "; getline( cin, tekst ); int dlugosc = tekst.length(), b, x; cout << "Wszystkie wyrazy wypisane w kolumnie: " << endl; for( int i = 0; i < dlugosc; i++ ) { cout << tekst[ i ]; b =( int ) tekst[ i ]; if( b == 32 ) { cout << endl; } } cout << endl << "Wszystkie wyrazy, ktorych pierwszy znak jest rowny ostatniemu: " << endl; x = tekst.length(); for( int i = 0; i < dlugosc; i++ ) { wyrazy = wyrazy + tekst[ i ]; b =( int ) tekst[ i ]; if( b == 32 && wyrazy[ 1 ] == wyrazy[ i - 1 ] ) { cout << wyrazy << endl; wyrazy.erase( 0, wyrazy.length() ); } } if( wyrazy[ 0 ] == wyrazy[ wyrazy.length() - 1 ] ) { cout << wyrazy; } return 0; }
|
|
pekfos |
» 2018-03-01 01:04:24 if( wyrazy[ 0 ] == wyrazy[ wyrazy.length() - 1 ] ) { cout << wyrazy; } |
To nawet nie jest w żadnej pętli. if( b == 32 && wyrazy[ 1 ] == wyrazy[ i - 1 ] ) { cout << wyrazy << endl; wyrazy.erase( 0, wyrazy.length() ); } |
Cokolwiek to ma robić, jest błędne. Jeśli b == 32, musisz wyczyścić wyraz niezależnie od spełnienia tego drugiego warunku. |
|
szepix Temat założony przez niniejszego użytkownika |
» 2018-03-01 09:14:08 Warunek bez pętli ma w przypadku braku spacji sprawdzić czy pierwszy znak wyrazu i ostatni są takie same. Co do warunku - poprawiłem. |
|
YooSy |
» 2018-03-01 10:24:51 Nie do końca rozumiem to zadanie. Wklejam taki kod: #include <iostream> #include <string> #include <sstream>
using namespace std;
int main() { string sentence; getline( cin, sentence ); istringstream iss { sentence }; string word; while( iss >> word ) { if( word[ 0 ] == word[ word.length() - 1 ] ) { cout << word << endl; } } } Program pobiera zdanie od użytkownika i w pętli wypisuje wszystkie wyrazy, których pierwsza i ostatnia litera jest taka sama. Można jeszcze dodać std::tolower z <cctype>, gdyby wielkość liter nie miała znaczenia (A czy a). |
|
« 1 » |