Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[Lekcja 13/14] Klamry {} w if...else

Ostatnio zmodyfikowano 2012-06-25 20:50
Autor Wiadomość
somiss
Temat założony przez niniejszego użytkownika
[Lekcja 13/14] Klamry {} w if...else
» 2012-06-10 21:33:19
C/C++
#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.
P-58213
xevuel
» 2012-06-10 21:35:26
C/C++
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>
klamry miedzi
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
P-58214
pekfos
» 2012-06-11 14:58:19
W przypadku jednej linii kodu nie trzeba używać nawiasów klamrowych.
C/C++
if( b == 0 )

     std::cout << "Tylko chuck Norris moze dzielic przez 0!" << std::endl;


@xevuel:
To cię zaciekawi.. :P
P-58233
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

C/C++
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.
P-58471
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 :)
P-58931
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.
P-58934
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;
P-58935
Wafel
» 2012-06-22 21:21:29
No teraz to się w ogóle nie kompiluje.

C/C++
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;
    }
}
}
P-58939
« 1 » 2 3
  Strona 1 z 3 Następna strona