[C++] Program wypisujące wszystkie wyrazy, których pierwszy znak jest równy ostatniemu.
Ostatnio zmodyfikowano 2014-10-08 01:00
gienekmiecio Temat założony przez niniejszego użytkownika |
[C++] Program wypisujące wszystkie wyrazy, których pierwszy znak jest równy ostatniemu. » 2014-09-30 22:27:53 Witam mam problem z dokładnością drugiej części pewnego zadania. Zadanie: Napisz program wprowadzający z klawiatury tekst i wypisujący go w następujący sposób: 1) wszystkie wyrazy wypisane w kolumnie 2) wszystkie wyrazy, których pierwszy znak jest równy ostatniemu, wypisane w kolumnie PRZYKŁAD ROZWIĄZANIA: Wpisany tekst>> "Ala ala, a ma kota." Wypisany tekst w 1: "Al am ak ot a." Program wypisuje wyrazy w kolumnie. Wypisany tekst w 2: "ala a" Program wypisuje wyrazy których pierwszy znak jest równy ostatniemu, w kolumnie. Pierwszy podpunkt rozwiązałem, drugi w połowie. Dlaczego drugi w połowie? Program dział pierw dobrze, ale nie wypisywał środka wyrazu. Zmodyfikowałem go jeszcze bardziej, i teraz powinno według mnie działać- ale program nie wypisuje wyrazów... Jak to naprawić? Napisałem program: #include <iostream> #include <cstdlib> #include <ctime> #include <string>
using namespace std;
int main() { cout << "Napisz krotkie zdanie:"; string zdanie; int dlugosc = 0; getline( cin, zdanie ); dlugosc = zdanie.length(); cout << "1) Zdanie wypisane w kolumnie: " << endl; for( int i = 0; i <= dlugosc; i++ ) { if( zdanie[ i ] == ' ' ) { cout << "" << endl; } else { cout << zdanie[ i ]; } } cout << endl << "2) Zdanie wypisane w kolumnie (tylko wyrazy spelniajace warunek): " << endl; string lol = ""; int lol2; int b = 0, c = 0; char x, y; for( int i = 0; i < dlugosc; i++ ) { if( zdanie[ i ] == ' ' ) { cout << "" << endl; lol.erase(); } else { c = c + 1; lol = lol + lol[ b ] + zdanie[ i ]; lol2 = lol.length() - 1; lol[ 0 ] = x; zdanie[ lol2 ] = y; if( x == y ) { b = 0; cout << lol; } lol.erase(); b = b + c + 1; } } return 0; }
|
|
pekfos |
» 2014-10-01 18:25:18 char x, y;
lol[ 0 ] = x; zdanie[ lol2 ] = y; if( x == y ) {
|
Tylko tu używasz x i y. Te zmienne nie są nawet potrzebne, pomijając, że są użyte kompletnie bez sensu i błędnie. |
|
gienekmiecio Temat założony przez niniejszego użytkownika |
» 2014-10-01 19:17:56 Bez tych zmiennych sytuacja się i tak nie zmienia. ??? string lol = ""; int lol2; int b = 0, c = 0; for( int i = 0; i < dlugosc; i++ ) { if( zdanie[ i ] == ' ' ) { cout << "" << endl; lol.erase(); } else { c = c + 1; lol = lol + lol[ b ] + zdanie[ i ]; lol2 = lol.length() - 1; if( lol[ lol2 ] == lol[ 0 ] ) { b = 0; cout << lol; } lol.erase(); b = b + c + 1; } }
|
|
pekfos |
» 2014-10-03 16:53:03 if( lol[ lol2 ] == lol[ 0 ] ) { b = 0; cout << lol; } lol.erase();
|
Na pewno erase() powinno być poza warunkiem..? |
|
gienekmiecio Temat założony przez niniejszego użytkownika |
» 2014-10-04 12:51:32 Po włączeniu tej linijki do if'a, nadal nie działa poprawnie :( |
|
libed |
» 2014-10-05 20:41:30 Albo w opisie jest coś nie tak albo ja nie rozumiem znaczenia słowa "wyraz".
jakim cudem w tekście "Ala ala, a ma kota" wyrazami są: - Al - am - ak - ot - a
? |
|
gienekmiecio Temat założony przez niniejszego użytkownika |
» 2014-10-07 19:22:29 Ma ktoś pomysł, bo ja już się poddaję? |
|
pekfos |
» 2014-10-07 20:54:33 Podaj aktualny kod. jakim cudem w tekście "Ala ala, a ma kota" wyrazami są: - Al - am - ak - ot - a
? |
To z pierwszego podpunktu, zdanie wypisane w kolumnie. Najwyraźniej 2 znaki na wiersz. |
|
« 1 » 2 |