Kordian Temat założony przez niniejszego użytkownika |
Napisy i warunki » 2016-01-30 17:19:18 Cześc wam, mam następujący problem: Chciałbym, żeby mój program wczytywał napis od użytkownika, a następnie wykonywał jakieś instrukcje,ale ten napis musi byc typu char. cout << "Sumowac? " << endl; cin >> napis; if( napis[ 1 ] == 'T' ) sumowanie();
Taki przykładowky kod, zakładam, że użytkownik wprowadzi napis o długości 1 naturalnie, takie rozwiązanie przejdzie? Jeśli nie, to co powinienem zmienić? Nie chcę korzystać ze stringów, muszę przećwiczyć chary. |
|
pekfos |
» 2016-01-30 17:40:45 Wczytaj po prostu jeden znak? |
|
mateczek |
» 2016-01-30 17:43:43 innymi słowy interesują cię napisy jak w języku C. Są to napisy zakończenie znakiem "0" Dlatego musisz korzystać z funkcji znanych w języku C Napisy w języku C są definiowane jako #include <iostream> #include <cstring> using namespace std;
int main() { char napis[ 20 ]; cin >> napis; if( strcmp( napis, "alicja" ) == 0 ) { cout << "tak" << endl; } else cout << "nie" << endl; } |
|
Kordian Temat założony przez niniejszego użytkownika |
» 2016-01-30 17:57:09 @pekfos Wczytaj po prostu jeden znak?
|
Chary to tablice znaków zakończone bajtem zerowym, wczytuję właśnie jeden znak. @mateczek if( strcmp( napis, "alicja" ) == 0 ) { cout << "tak" << endl; } else cout << "nie" << endl;
|
Powinienem porównać zatem mój napis z 't' albo 'T', chciałeś mi to podpowiedzieć? |
|
pekfos |
» 2016-01-30 18:08:03 Chary to tablice znaków zakończone bajtem zerowym, wczytuję właśnie jeden znak. |
Mam na myśli kompletnie jeden znak. |
|
mateczek |
» 2016-01-30 18:11:10 chyba Cie nie zrozumiałem trochę zmiksowałeś pojęcia !!! Jeśli chcesz pracować na znakach pojedynczych to wczytujesz znak pojedynczy. jeśli chcesz porównywać całe napisy w stylu C korzystać musisz z funkcji strcmp() char znak cin >> znak; if( znak == 'a' ) { } |
|
Kordian Temat założony przez niniejszego użytkownika |
» 2016-01-30 18:17:31 tylko jak mam wczytać char pojedyńczy skoro jego długość będzie zawsze wieksza od 1? Każdy char MUSI zawierać bajt zerowy, który oznacza koniec napisu i stoi on na ostatnim miejscu tablicy znaków. Czyli znak 'T' to w rzeczywistości tablica dwuelementowa zawierająca elementy char[1]='T' i char[2]=0. Nie za bardzo rozumiem co znaczy wzcytać jeden znak. |
|
pekfos |
» 2016-01-30 18:28:38 Jeden znak, to jest jeden znak - 8-bitowa liczba. Bajt zerowy musi być zawarty na końcu c-stringa, czyli ciągu znaków. 'T' to liczba, "T" to dwuelementowa tablica znaków. Czyli znak 'T' to w rzeczywistości tablica dwuelementowa zawierająca elementy char[1]='T' i char[2]=0. |
Napisałeś właśnie, że znak, to ten znak i zero. Czyli dowolny znak rozwija się rekurencyjnie w ten znak i nieskończenie wiele zer..? A skoro widzimy znaki na ekranie, to muszą się mieścić w pamięci, więc każda pamięć ma nieskończenie wielką pojemność. To by znaczyło, że te wszystkie giga/terabajty to tylko marketing i wyciskanie kasy za nic! Chwila.. To tak głupie, że powinieneś to sam zauważyć.. |
|
« 1 » 2 |