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

Zliczanie samogłosek i spółgłosek.

Ostatnio zmodyfikowano 2017-07-05 22:36
Autor Wiadomość
Bercik97
Temat założony przez niniejszego użytkownika
Zliczanie samogłosek i spółgłosek.
» 2017-07-03 19:22:01
Witam, mam problem z zadaniem z książki. Muszę napisać program który zlicza ile jest słów które zaczynają się od spółgłosek, samogłosek i które nie zaliczają się do żadnych z tych dwóch kategorii. No i że litera ' q ' kończy program. Napisałem taki kod :
C/C++
#include <iostream>
#include <cctype>
#include <cstdlib>

using namespace std;

char ch;
int samogloska = 0, spolgloska = 0, nienalerzy = 0;

int main()
{
    cout << "Napisz cos. Litera 'q' konczy program. \n";
   
    while(( cin.get( ch ) ) &&(( ch != 'q' ) &&( ch != 'Q' ) ) )
    {
        if( isalpha( ch ) )
        {
            if( ch != 'a' && ch != 'e' && ch != 'i' && ch != 'o' && ch != 'y' && ch != 'u' )
                 spolgloska++;
            else
                 samogloska++;
           
        }
        else nienalerzy++;
       
    }
   
    cout << spolgloska << " slow zaczynajacych sie od spolglosek.\n";
    cout << samogloska << " slow zaczynajacych sie od samoglosek.\n";
    cout << nienalerzy << " slow nie zalicza sie do zadnej z tych kategorii.\n";
   
    system( "PAUSE" );
   
    return 0;
}
Program zamiast podawać ile słów zaczyna się od tego i tego, to pokazuje mi ile jest ogólnie spółgłosek i samogłosek. Jak to zrobić ?
P-163005
maly7
» 2017-07-03 19:58:18
No bo liczysz każdy znak i sprawdzasz czy jest spolgloska czy nie i inkrementujesz zmienne. Przeanalizuj cały kod i zastanów się jak działa. Musisz sprawdzać jakoś całe słowa. Możesz sprawdzać litery i sprawdzać czy wystapiła ' ' (spacja) lub np. \n albo działac na stringach.
P-163006
Bercik97
Temat założony przez niniejszego użytkownika
» 2017-07-03 20:23:34
Dodałem takie coś na początku pętli while
C/C++
if( ch == ' ' )
     continue;

if( ch == '\n' )
     continue;

Program nie zlicza mi już spacji i nowych linijek ale dalej nie mam pojęcia jak zrobić żeby nie liczył mi tych liter tylko literę od której zaczyna się słowo :(
P-163007
mateczek
» 2017-07-03 20:35:56
C/C++
#include <iostream>
#include <string>
using namespace std;

int main() {
    std::string wyraz;
    int licznik = 0;
    while( cin >> wyraz, wyraz != "Q" ) {
        if( wyraz[ 0 ] = 'a' ) licznik++; //policz ile wyrazów zaczyna się od "a"
       
    }
    cout << licznik;
}
P-163009
Bercik97
Temat założony przez niniejszego użytkownika
» 2017-07-03 20:42:02
Dzięki !
P-163010
Bercik97
Temat założony przez niniejszego użytkownika
» 2017-07-04 20:53:19
Dopiero wziąłem się za ten kod bo wcześniej nie było czasu, siedziałem trochę i wszystko jest git, program zlicza zdania zaczynające się od samogłosek i spółgłosek ale nie zlicza mi tych znaków które nie należą? Jak to zrobić ? Ktoś coś jakaś pomoc, oto mój kod:
C/C++
#include <iostream>
#include <cctype>
#include <cstdlib>
#include <string>

using namespace std;

string wyraz;
int samogloska = 0, spolgloska = 0, nienalerzy = 0;

int main()
{
    cout << "Napisz cos. Litera 'q' konczy program. \n";
   
    while( cin >> wyraz &&(( wyraz != "q" ) &&( wyraz != "Q" ) ) )
    {
        if( wyraz == " " )
             continue;
       
        if( wyraz == "\n" )
             continue;
       
        {
            if( wyraz[ 0 ] == 'a' || wyraz[ 0 ] == 'e' || wyraz[ 0 ] == 'i' ||
            wyraz[ 0 ] == 'o' || wyraz[ 0 ] == 'y' || wyraz[ 0 ] == 'u' )
                 samogloska++;
            else if( true )
            {
                spolgloska++;
            }
            else nienalerzy++; // NIE DZIAŁA DLA NIEZALICZAJACYCH SIE SŁOW :/
           
        }
       
    }
   
    cout << spolgloska << " slow zaczynajacych sie od spolglosek.\n";
    cout << samogloska << " slow zaczynajacych sie od samoglosek.\n";
    cout << nienalerzy << " slow nie zalicza sie do zadnej z tych kategorii.\n";
   
    system( "PAUSE" );
   
    return 0;
}
P-163030
mateczek
» 2017-07-04 21:14:56
jeśli masz analizować pierwsze litery wyrazów to spacje między wyrazami raczej nie powinny Cię interesować ??

C/C++
if( wyraz == " " ) // nie ma takich wyrazów operator wczytywania słów pomija białe znaki bo jak inaczej oddzielić słowa??
     continue;

if( wyraz == "\n" )
     continue;


jeśli wyraz zaczyna się od cyfry czy znaku specjalnego dopisz

C/C++
if( wyraz[ 0 ] == 'a' || wyraz[ 0 ] == 'e' || wyraz[ 0 ] == 'i' ||
wyraz[ 0 ] == 'o' || wyraz[ 0 ] == 'y' || wyraz[ 0 ] == 'u' )
     samogloska++;
else if( wyraz[ 0 ] >= 'a' && wyraz[ 0 ] <= 'z' )
{
    spolgloska++;
}
else nienalerzy++; // NIE DZIAŁA DLA NIEZALICZAJACYCH SIE SŁOW :/

P-163033
Bercik97
Temat założony przez niniejszego użytkownika
» 2017-07-04 21:37:54
Działa, tylko nie rozumiem o co chodzi z tym warunkiem
C/C++
else if( wyraz[ 0 ] >= 'a' && wyraz[ 0 ] <= 'z' )
P-163034
« 1 » 2
  Strona 1 z 2 Następna strona