Wyciąganie pierwszej literki z wyrazu
Ostatnio zmodyfikowano 2009-01-08 14:56
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) |
|
pekfos |
» 2009-01-06 20:16:37 w jakim mają być typie te dane? -std::string: 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 |
|
lynx |
» 2009-01-06 20:21:29 Przykładowo: 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. |
|
pekfos |
» 2009-01-06 20:23:30 rzeczywiście:P już poprawiam:) |
|
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. 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; } }
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? |
|
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' ) ) |
|
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. |
|
« 1 » |