Problem z funkcją warunkową i strumieniem
Ostatnio zmodyfikowano 2010-07-26 15:53
Pawel92 Temat założony przez niniejszego użytkownika |
Problem z funkcją warunkową i strumieniem » 2010-07-26 14:53:24 Być moze dla niektorych problem moze wydać się banalny, jednak nie rozumiem pewnych dwu rzeczy, które dotyczą zadania 11.1.2 w kursie c++. Pierwszą rzeczą jest to, dlaczego kompilator przy pobieraniu danych do zmiennej, wymaga wielkości pobieranych danych rownej przynajmniej 2:
cin.get(znak,2);
Jezeli wpisuje 1, program nie wczytuje zadnego znaku.
Drugą sprawą jest samo porównanie. Próbowałem różnymi metodami sprawdzić warunek i za każdym razem efekt jest ten sam. Problem polega na tym, że program zawiera fragment kodu podany poniżej. Przy wpisaniu Z w programie, pojawia się napis NIE. Mógłby mi ktoś wyjaśnić jak to działa, bo dla mnie to nieco nielogiczne ;p
if (znak == "Z") cout << "TAK"; else cout << "NIE"; |
|
Dybusek |
» 2010-07-26 15:09:16 Teksty porównuje się za pomocą specjalnych funkcji. |
|
Pawel92 Temat założony przez niniejszego użytkownika |
» 2010-07-26 15:15:59 Ano chyba że tak.
Zauważyłem, ze da sie to zrobic, porownujac pierwsza komorke tablicy do odpowiednika z kodu ASCII, ale pozostaje jeszcze pierwszy problem. Ma ktoś na to wyjaśnienie? |
|
programator |
» 2010-07-26 15:53:47 Funkcja, której użyłeś: istream::get(char*, streamsize, char);
wymaga chociaż jednego znaku, bo musi być jakiś ogranicznik(ostatni argument). Funkcja ta, czyta dotąd, aż napotka ogranicznik i zostawia go w strumieniu. Chyba, że ilość wczytanych ze strumienia znaków przekroczy wartość daną w 2 argumencie:) P.S. Do czytania ze strumienia, ja zawsze używam instrukcji: getline(cin, string);
tak jak przy plikach:) A co do drugiego problemu, to jak najbardziej można tak porównywać.... char znak; cin>>znak; if(znak == 'Z') cout<<"TAK"; else cout<<"NIE";
Jeżeli wpiszesz "Z", to będzie TAK. Ale jeżeli wpiszesz "z", będzie nie:) |
|
« 1 » |