Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Program wypisujący wszystkie wyrazy, których pierwszy znak jest równy ostatniemu

Ostatnio zmodyfikowano 2018-03-01 10:24
Autor Wiadomość
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

C/C++
#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;
}
P-169665
pekfos
» 2018-03-01 01:04:24
C/C++
if( wyrazy[ 0 ] == wyrazy[ wyrazy.length() - 1 ] )
{
    cout << wyrazy;
}
To nawet nie jest w żadnej pętli.

C/C++
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.
P-169669
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.
P-169671
YooSy
» 2018-03-01 10:24:51
Nie do końca rozumiem to zadanie. Wklejam taki kod:
C/C++
#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).
P-169672
« 1 »
  Strona 1 z 1