somiss Temat założony przez niniejszego użytkownika |
[Lekcja 13/14] Klamry {} w if...else » 2012-06-10 21:33:19 #include <iostream> int main() { int liczba; std::cout << "Wybierz rodzaj dzialania: " << std::endl; std::cout << "1. Dodawanie" << std::endl; std::cout << "2. Odejmowanie" << std::endl; std::cout << "3. Mnozenie" << std::endl; std::cout << "4. Dzielenie" << std::endl; std::cin >> liczba; float a; std::cout << "Podaj liczbe pierwsza: "; std::cin >> a; float b; std::cout << "Podaj liczbe druga: "; std::cin >> b; switch( liczba ) { case 1: std::cout << "a + b = " << a + b << std::endl; std::cout << "Dzieki za skorzystanie z kalkulatora, milego dnia :) " << std::endl; break; case 2: std::cout << "a - b = " << a - b << std::endl; std::cout << "Dzieki za skorzystanie z kalkulatora, milego dnia :) " << std::endl; break; case 3: std::cout << "a * b = " << a * b << std::endl; std::cout << "Dzieki za skorzystanie z kalkulatora, milego dnia :) " << std::endl; break; case 4: std::cout << "a / b = " << a / b << std::endl; std::cout << "Dzieki za skorzystanie z kalkulatora, milego dnia :) " << std::endl; if( b == 0 ) std::cout << "Tylko chuck Norris moze dzielic przez 0!" << std::endl; else std::cout << "a / b = " << a / b << std::endl; std::cout << "Dzieki za skorzystanie z kalkulatora, milego dnia :) " << std::endl; break; default: std::cout << "Nie wybrales zadnego z powyzszych dzialan, kalkulator wylaczy sie" << std::endl; break; } return 0; }
Witam. Jestem nowicjuszem,a to jest moja wersja kalkulatora z lekcji 14. Niestety nie działa on w pełni ponieważ nie wiem jak, ani gdzie wstawić klamry miedzi if...else. Po prostu nie rozumiem do końca lekcji 13. Próbowałem wstawić je na kilkanaście sposobów, ale albo dalej nie działało, albo się nie kompilował. Byłbym wdzięczny za łopatologiczne wyjaśnienie wstawiania tych klamer. Pozdrawiam. |
|
xevuel |
» 2012-06-10 21:35:26 if( b == 0 ) { std::cout << "Tylko chuck Norris moze dzielic przez 0!" << std::endl; }
I dalej analogicznie :) Po prostu po nawiasie kończącym instrukcję if (czyli ")") wstawiamy klamrę "{", a po instrukcjach, które chcemy aby się warunkowo wykonały, dajemy "}". Proste? :) <offtop> Słyszałem o rudach, ale o klamrach? :> </offtop> @pekfos: Tak wiem, ale on chciał się dowiedzieć gdzie te klamry wstawić, a nie czy trzeba :) A co do linka... Miedziane klamry to nie klamry miedzi ;) Jakby napisał klamry z miedzi, to by się zgadzało, a tak... :P |
|
pekfos |
» 2012-06-11 14:58:19 W przypadku jednej linii kodu nie trzeba używać nawiasów klamrowych. if( b == 0 )
std::cout << "Tylko chuck Norris moze dzielic przez 0!" << std::endl;
@xevuel: To cię zaciekawi.. :P |
|
dominicuss |
» 2012-06-14 13:47:55 problem leży gdzie indziej, żeby nie meczyć sie z case'ami uzywaj w nich klamr co zapobiegnie wywalaniu bledow przez kompilator switch( liczba ) { case 1: { std::cout << "a + b = " << a + b << std::endl; std::cout << "Dzieki za skorzystanie z kalkulatora, milego dnia :) " << std::endl; break; } case 2: { std::cout << "a - b = " << a - b << std::endl; std::cout << "Dzieki za skorzystanie z kalkulatora, milego dnia :) " << std::endl; break; } case 3: { std::cout << "a * b = " << a * b << std::endl; std::cout << "Dzieki za skorzystanie z kalkulatora, milego dnia :) " << std::endl; break; } case 4: { std::cout << "a / b = " << a / b << std::endl; std::cout << "Dzieki za skorzystanie z kalkulatora, milego dnia :) " << std::endl; if( b == 0 ) std::cout << "Tylko chuck Norris moze dzielic przez 0!" << std::endl; else std::cout << "a / b = " << a / b << std::endl; std::cout << "Dzieki za skorzystanie z kalkulatora, milego dnia :) " << std::endl; break; } default: { std::cout << "Nie wybrales zadnego z powyzszych dzialan, kalkulator wylaczy sie" << std::endl; break; } }
czy kod nie wygląda teraz lepiej no i na pewno się nie wywali natomiast po if, else pierwsza linia jest wykonywana w przypadku spełnienia warunku jeśli chcesz więcej linii musisz użyć klamr. |
|
Wafel |
» 2012-06-22 20:17:55 Witam ponownie. Z tej strony Somiss się kłania. Przepraszam,że tak długo nie odpisywałem, ale zmuszony byłem założyć nowe konto, ponieważ na tym starym jest jakiś błąd. Jak to jest, że gdy nie byłem zalogowany mogłem bez problemów przeglądać: kursy, artykuły, dokumentację itd. a po zalogowaniu na Somiss'a nie działała żadna podstrona? Wyświetlało się tylko puste białe tło. No ale najważniejsze, że już wszystko działa. Wracając do problemu kalkulatora, nadal nie działa tak jak należy. Jest problem z dzieleniem przez 0. Jeśli nie wierzycie skompilujcie i podzielcie przez jakąś liczbę przez 0. W programie wychodzi bzdura. Moje pytanie jak uczynić tak żeby jak ktoś będzie próbował podzielić przez 0 dostał informację, że tak się nie da i żeby znowu musiał wpisać inne liczby do działania. POzdrawiam :) |
|
kampar |
» 2012-06-22 20:45:36 Występuje błąd ponieważ w tej chwili przy dzieleniu przez 0 najpierw wyświetlasz wynik dzielenia (co powoduje błąd), a dopiero później chcesz dać tylko informację, że tak nie wolno. Wywal pierwsze dzielenie, a zostaw tylko to w else. |
|
Drraven |
» 2012-06-22 20:47:08 Gdy dzielisz przez zero wyświetlasz tylko komunikat zamiast zatrzymać dalszy ciąg wydarzeń. dodaj po cout z tym chuckiem return - 1; |
|
Wafel |
» 2012-06-22 21:21:29 No teraz to się w ogóle nie kompiluje. switch( liczba ) { case 1: { std::cout << "a + b = " << a + b << std::endl; std::cout << "Dzieki za skorzystanie z kalkulatora, milego dnia :) " << std::endl; break; } case 2: { std::cout << "a - b = " << a - b << std::endl; std::cout << "Dzieki za skorzystanie z kalkulatora, milego dnia :) " << std::endl; break; } case 3: { std::cout << "a * b = " << a * b << std::endl; std::cout << "Dzieki za skorzystanie z kalkulatora, milego dnia :) " << std::endl; break; } case 4: { if( b == 0 ) std::cout << "Tylko chuck Norris moze dzielic przez 0!" << std::endl; return - 1; else std::cout << "a / b = " << a / b << std::endl; std::cout << "Dzieki za skorzystanie z kalkulatora, milego dnia :) " << std::endl; break; } default: { std::cout << "Nie wybrales zadnego z powyzszych dzialan, kalkulator wylaczy sie" << std::endl; break; } } }
|
|
« 1 » 2 3 |