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

Wyciąganie pierwszej literki z wyrazu

Ostatnio zmodyfikowano 2009-01-08 14:56
Autor Wiadomość
grzesiekz
Temat założony przez niniejszego użytkownika
Wyciąganie pierwszej literki z wyrazu
» 2009-01-06 19:56:49
Witajcie. Pozwólcie, że zacytuję, co kazał mi zrobić nauczyciel:
"Utwórz i zapełnij tablice 10 imion. Wypisz tylko te imiona, które zaczynają się na literę A lub I."
I tutaj schody. Moja pierwsza reakcja: "o.O przecież nie uczyliśmy się działań na tekście". (Szukałem i szukałem, coś nie mogę znaleźć, więc piszę tutaj.)
Jak mam wyciągnąć pierwszą literkę wyrazu????
Ostrzegam, że mam tylko szczątkową wiedzę nt. zmiennych tekstowych i ich możliwości, dlatego nie zapędźcie się za bardzo :) (Btw. czy istnieje coś, co pozwalałoby na takie porównanie, jak: wpisuję "A*" i pasuje do tego opisu wyraz "Allah"? :D)
P-3486
pekfos
» 2009-01-06 20:16:37
w jakim mają być typie te dane?
-std::string:
C/C++
string[ 10 ] imiona;
string bufor;
char znak = 'A';
for( int a = 0; a < 10; a++ )
{
    bufor = imiona[ a ];
    if( bufor[ 0 ] == znak ) cout << imiona[ a ];
   
}
 zmienna znak to pierwsza litera imion które chcesz uzyskać
-tablica char'ów:
 wystarczy pobrać pierwszy element tablicy(pierwsza litera) i warunek
P-3488
lynx
» 2009-01-06 20:21:29
Przykładowo:
C/C++
string imie;
cin >> imie;
cout << "\n" << imie[ 0 ];
I masz wyciągnięty pierwszy znak z wyrazu. :)

/edit:
Pekfos masz błąd tablice(string) numerujemy od zera, nie od 1.
P-3490
pekfos
» 2009-01-06 20:23:30
rzeczywiście:P już poprawiam:)
P-3491
grzesiekz
Temat założony przez niniejszego użytkownika
» 2009-01-07 15:25:59
Dzięki za pomoc, jednak następny problem. Spójrzcie.

C/C++
void imiona()
{
    string imiona[ 10 ];
    for( int i = 0; i < 10; i++ )
    {
        cout << "Podaj imie nr " << i + 1 << ": ";
        cin >> imiona[ i ];
    }
    cout << "Wyrazy zaczynajace sie na A lub I:\n";
    for( int j = 0; j < 10; j++ )
    {
        if(( imiona[ j ][ 0 ] == "A" ) ||( imiona[ j ][ 0 ] == "I" ) ) cout << imiona[ j ] << endl;
       
    }
    //int j=5;
    //cout<<endl<<imiona[j][0];
}

Samo wypisywanie literki (w części zakomentowanej) działa bez zarzutu, jednak taka postać, jaką wstawiłem, nie chce mi się skompilować (zgodnie z treścią polecenia, muszę sprawdzić, czy te literki równe są "A" lub "I") i otrzymuję następujący komunikat:

In function `void imiona()':
60 ISO C++ forbids comparison between pointer and integer
60 ISO C++ forbids comparison between pointer and integer

I co z tym?
P-3543
pekfos
» 2009-01-07 15:29:49
spróbuj zmienić to:
if(( imiona[ j ][ 0 ] == "A" ) ||( imiona[ j ][ 0 ] == "I" ) )
na to:
if(( imiona[ j ][ 0 ] == 'A' ) ||( imiona[ j ][ 0 ] == 'I' ) )
P-3546
grzesiekz
Temat założony przez niniejszego użytkownika
» 2009-01-08 14:56:21
Dzięki za pomoc, działa to, co podesłałeś :)
Pozdrawiam.
P-3580
« 1 »
  Strona 1 z 1