[Lekcja 9] Problem z bool'em.
Ostatnio zmodyfikowano 2013-09-14 20:28
Dziobas Temat założony przez niniejszego użytkownika |
[Lekcja 9] Problem z bool'em. » 2013-09-14 02:47:48 Witam! Jestem początkujący także z góry przepraszam ze kod jest w normalnym tekście ale szukałem i szukałem... i dalej nie wiem jak zrobić z tego specjalną ramkę jako "kod". Problem jest taki że na końcu po "Wczytano" wszędzie pokazuje mi wartość "1" ;) mimo że w tym środkowym jak się wpisuje "tak 123" to wtedy "y" wyświetla jako wartość "0" ale "spr" przy tym ma dalej wartość "1". I moje pytanie brzmi... czy do każdej zmiennej muszę tworzyć osobną zmienna bool'a czy moze być ta jedna "spr" tylko ja coś źle tutaj wpisałem ? Prosiłbym o pomoc ;) w tematach Lekcji 9 zadania nie znalazłem podobnego problemu albo słabo szukałem. Z góry dziękuje ;) #include <iostream> int main() { float liczba; float y; float b; bool spr = std::cin.good(); std::cin.clear(); std::cin.sync(); std::cin >> liczba; spr; std::cin.clear(); std::cin.sync(); std::cin >> y; spr; std::cin.clear(); std::cin.sync(); std::cin >> b; spr; std::cout << "Liczba pierwsza to : = " << liczba << " Wczytano?: " << spr << std::endl; std::cout << "Liczba druga to : = " << y << " Wczytano?: " << spr << std::endl; std::cout << "Liczba trzecia to : = " << b << " Wczytano?: " << spr << std::endl; return 0; } |
|
rafixxx25 |
» 2013-09-14 10:08:30 Nie możesz zrobić tego w ten sposób. Po pierwsze: gdybyś zapisywał trzy razy do tej samej zmiennej to za każdym razem zmienna się nadpisze i wypisując jej wartość na końcu miałbyś tylko wartość ostatniego zapisu. Po drugie: używasz std::cin.good(); tylko raz i to w dodatku przed wczytaniem jakiejkolwiek liczby. Przeczytaj sobie jeszcze raz tą lekcję, żeby zrozumieć zasadę działania tej funkcji. Pisząc: nie robisz nic, co miałoby jakikolwiek wpływ na program. Nie przypisujesz do tej zmiennej żadnej wartości itd. Musisz użyć 3 różnych zmiennych bool, aby wypisać wszystkie napisy na końcu. |
|
Dziobas Temat założony przez niniejszego użytkownika |
» 2013-09-14 12:35:31 No dzięki wielkie ;) już jak się kładłem spać to obczaiłem w głowie że to tak ma być ;) ale dzięki Tobie zrozumiałem chociaż że samo "bool spr = std::cin.good();" działa tylko w tym miejscu ;) myślałem po prostu że jak stworzyłem sobie zmienną o tej wartości, to potem mogę sobie tego używać do każdego po kolei ;). Chociaż to nadpisanie danych mógłbyś mi bardziej szczegółowo wytłumaczyć? Z góry dzięki ;) Tak mi działa poprawnie: #include <iostream> int main() { float liczba; float y; float b; bool spr; bool spr2; bool spr3; std::cin.clear(); std::cin.sync(); std::cin >> liczba; spr = std::cin.good(); std::cin.clear(); std::cin.sync(); std::cin >> y; spr2 = std::cin.good(); std::cin.clear(); std::cin.sync(); std::cin >> b; spr3 = std::cin.good(); std::cout << "Liczba pierwsza to : = " << liczba << " Wczytano?: " << spr << std::endl; std::cout << "Liczba druga to : = " << y << " Wczytano?: " << spr2 << std::endl; std::cout << "Liczba trzecia to : = " << b << " Wczytano?: " << spr3 << std::endl; return 0; }
PS. Jak się robi tą ramke "C/C++" ? ^^ |
|
rafixxx25 |
» 2013-09-14 12:48:33 [cpp] [/cpp]
"Chociaż to nadpisanie danych mógłbyś mi bardziej szczegółowo wytłumaczyć? " Wygląda na to, że niezbyt dobrze rozumiesz jeszcze pojęcie zmiennych ;) bool spr; to zmienna typu bool - przyjmuje wartość true lub false. std::cin.good(); to funkcja, która zwraca wartość typu bool. spr = std::cin.good(); Powyższy zapis przypisuje do naszej zmiennej typu bool(spr) wartość typu bool zwróconą przez funkcję std::cin.good(); To tak jakbyś napisał: spr = true; albo spr = false;
tylko działa w konkretnych przypadkach(jeśli zapisanie ze strumienia powiodło się - true, jeśli nie - false. Wywołując tą samą funkcję kilka razy dla tej samej zmiennej będziesz nadpisywał jej wartość, tak, że przyjmie ona tą wartość, któą będzie na samym końcu. |
|
Dziobas Temat założony przez niniejszego użytkownika |
» 2013-09-14 20:28:30 No teraz chyba dobrze zrozumiałem ;) innej opcji nie ma, dzięki wielkie za pomoc ;) Bless ;) |
|
« 1 » |