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

Rozpoznawanie znaku spacji przez program

Ostatnio zmodyfikowano 2016-10-02 17:08
Autor Wiadomość
bati22
Temat założony przez niniejszego użytkownika
Rozpoznawanie znaku spacji przez program
» 2016-10-02 14:43:04
Witam
Napisałem program, który ma zliczać liczbę słów w tekście rozpoczynających się od samogłoski, spółgłoski, bądź innego znaku. Niestety, gdy używałem w nim znaku spacji, program go nie rozpoznawał i musiałem zmienić znak spacji na dolną kreskę, co widać w poniższym kodzie.

C/C++
#include <iostream>
#include <cctype>

using namespace std;

int main()
{
    cout << "Podawaj słowa (pojedyncze q kończy): " << endl;
    char ch = 'a';
    bool spacja = true;
    int LiczbaSamoglosek = 0;
    int LiczbaSpolglosek = 0;
    int LiczbaPozostalychZnakow = 0;
    bool CzyJestToSpolgloska = true;
    int TablicaSamoglosek[ 9 ] = { 'a', 'ą', 'e', 'ę', 'i', 'o', 'ó', 'u', 'y' };
   
    cin >> ch;
   
    while( !( ch == 'q' ) )
    {
        if( spacja )
        {
            if( isalpha( ch ) )
            {
                ch = tolower( ch );
                for( int i = 0; i < 9; i++ )
                {
                    if( ch == TablicaSamoglosek[ i ] )
                    {
                        LiczbaSamoglosek++;
                        CzyJestToSpolgloska = false;
                        break;
                    }
                }
                if( CzyJestToSpolgloska )
                     LiczbaSpolglosek++;
               
                CzyJestToSpolgloska = true;
            }
           
            else
                 LiczbaPozostalychZnakow++;
           
        }
       
        if( ch == '_' )
             spacja = true;
        else
             spacja = false;
       
        cin >> ch;
       
    }
   
    cout << LiczbaSpolglosek << " słów zaczyna się od spółgłosek" << endl;
    cout << LiczbaSamoglosek << " słow zaczyna się od samogłosek" << endl;
    cout << LiczbaPozostalychZnakow << " słów nie zalicza się do żadnej z tych kategorii." << endl;
   
    return 0;
}
Moje pytanie brzmi: jak zastąpić znak dolnej kreski znakiem spacji? Próbowałem przypisać w pętli zmiennej boolowskiej spacja wartość isspace(ch), jednak to też nie zdaje egzaminu.
P-152185
Monika90
» 2016-10-02 16:52:51
Operator >> pomija spacje przy odczycie ze strumienia, wykonaj instrukcję
C/C++
std::cin >> std::noskipws;
to da się odczytać spacje
P-152190
bati22
Temat założony przez niniejszego użytkownika
» 2016-10-02 17:08:02
Ok, dzierga. Bardzo dziękuję za pomoc :)
P-152193
« 1 »
  Strona 1 z 1