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

Poziom 2 - Lekcja 15 - Zadanie drugie - Kompletna niewiedza

Ostatnio zmodyfikowano 2012-03-31 19:49
Autor Wiadomość
Vendi
Temat założony przez niniejszego użytkownika
Poziom 2 - Lekcja 15 - Zadanie drugie - Kompletna niewiedza
» 2012-03-28 19:43:35
Witam.
Już dwa razy przymierzałem się do nauki c++ ale zawsze na czymś poległem.
Teraz nie przestanę, niby rozumiem lekcje 15 ale za cholere nie mogę sobie poradzić z zadaniem drugim, myślę i myślę ale nic, pustka. Oglądałem tematy z problemami innych ale nie było tam rozwiązania. Może to głupie ale zaczynam rozumieć pewne rzeczy dopiero jak ujrzę całokształt. Może ktoś podać rozwiązanie zadania drugiego?
Mój kalkulator:
C/C++
#include <iostream>
int main()
{
    int dodawanie;
    int dodawanie2;
    int wybor;
    std::cout << "Wybierz akcje:\n1.Dodawanie\n2.Odejmowanie\n3.Mnozenie\n4.Dzielenie" << std::endl;
    std::cout << "Akcja: ";
    std::cin >> wybor;
    if( wybor > 0 );
    else
         std::cout << "Blad!";
   
    switch( wybor )
    {
    case 1:
        std::cout << "Podaj dwie liczby: " << std::endl;
        std::cout << "Pierwsza: ";
        std::cin >> dodawanie;
        if( dodawanie > 0 );
        else std::cout << "Blad, dalsza operacja nie powiedzie sie." << std::endl;
       
        std::cout << "Druga: ";
        std::cin >> dodawanie2;
        std::cout << "Wynik: " << dodawanie + dodawanie2 << std::endl;
        break;
    case 2:
        std::cout << "Podaj dwie liczby: " << std::endl;
        std::cout << "Pierwsza: ";
        std::cin >> dodawanie;
        std::cout << "Druga: ";
        std::cin >> dodawanie2;
        std::cout << "Wynik: " << dodawanie - dodawanie2 << std::endl;
        break;
    case 3:
        std::cout << "Podaj dwie liczby: " << std::endl;
        std::cout << "Pierwsza: ";
        std::cin >> dodawanie;
        std::cout << "Druga: ";
        std::cin >> dodawanie2;
        std::cout << "Wynik: " << dodawanie * dodawanie2 << std::endl;
        break;
    case 4:
        std::cout << "Podaj dwie liczby: " << std::endl;
        std::cout << "Pierwsza: ";
        std::cin >> dodawanie;
        std::cout << "Druga: ";
        std::cin >> dodawanie2;
        std::cout << "Wynik: " << dodawanie / dodawanie2 << std::endl;
        break;
    default:
        std::cout << "\nBledny wybor, dostepne opcje to 1,2,3,4!";
       
    }
    return 0;
}
Chyba jest bardzo przejrzysty.
Błagam o pomoc, wiem że to głupie, że powinienem dojść do tego sam, nie jestem leniem, nie zrezygnowałem po myśli że tego już nie umiem i mam to w dupie.
Jeśli możecie, wytłumaczenie tego bardziej obrazowo też mogłoby załatwić częściowo sprawe.

Do zobaczenia.
P-53389
jsc
» 2012-03-28 20:05:05
A na czym polega problem właściwy?
P-53397
Chlorek
» 2012-03-28 20:10:56
A tak w ogóle to czemu zakładasz, że podczas dodawania - podanie liczby mniejszej od 0 spowoduje błąd. Do póki liczby są signed (niedodatnie i nieujemne) nie powinno być problemu.
P-53400
Vendi
Temat założony przez niniejszego użytkownika
» 2012-03-28 20:30:34
Ten warunek to pozostałość po moich próbach z do..while.
Problem polega na tym że powinienem zrozumieć to zadanie po ujrzeniu całości, teraz tego nie rozumiem.
P-53406
Vendi
Temat założony przez niniejszego użytkownika
» 2012-03-29 20:26:46
Dobra, po całym dniu myślenia w szkole już ogarnąłem do..while lecz nie wiem czemu nie wracam do początku programu, co jest nie tak?
C/C++
#include <iostream>
int main()
{
    int dodawanie;
    int dodawanie2;
    int wybor;
    bool a;
    do
    {
        std::cout << "Wybierz akcje:\n1.Dodawanie\n2.Odejmowanie\n3.Mnozenie\n4.Dzielenie" << std::endl;
        std::cout << "Akcja: ";
        std::cin >> wybor;
        if( wybor > 0 );
        else
             std::cout << "Blad!";
       
        switch( wybor )
        case 1
    : std::cout << "Podaj dwie liczby: " << std::endl;
        std::cout << "Pierwsza: ";
        std::cin >> dodawanie;
        if( dodawanie > 0 );
        else std::cout << "Blad, dalsza operacja nie powiedzie sie." << std::endl;
       
        std::cout << "Druga: ";
        std::cin >> dodawanie2;
        std::cout << "Wynik: " << dodawanie + dodawanie2 << std::endl;
        a = dodawanie + dodawanie2;
        break;
    }
    while( !a );
   
    std::cout << "Koniec.";
   
    return 0;
}

Program normalnie się kończy a nie wraca na początek. Nie wiem z jakiego powodu.


PS: Wywaliłem reszte "Case" żeby najpierw ogarnąć to z jednym case.
P-53455
SeaMonster131
» 2012-03-29 20:57:15
Po pierwsze, nie stawiaj średnika po instrukcji if:
C/C++
if( blabla ) //!
 - tu nie ma średnika.
Po drugie pętla będzie się wykonywać dopóki !a czyli a == 0.
P-53460
Vendi
Temat założony przez niniejszego użytkownika
» 2012-03-29 21:11:21
No i właśnie się nie powtarza, od razu jest koniec.
Jeżeli usunę średnik po if (sss) jest error.
P-53463
jankowalski25
» 2012-03-29 21:25:49
Zamiast
C/C++
if( wybor > 0 );
else
     std::cout << "Blad!";

napisz na przykład
C/C++
if( wybor <= 0 )
     std::cout << "Blad!";

Sprawdź, co się stanie, gdy wybor > 4. Popraw to.
pętla będzie się wykonywać dopóki !a czyli a == 0
Gdy a nie równa się 0, pętla się kończy. Rozumiesz? Popraw to.
P-53464
« 1 » 2
  Strona 1 z 2 Następna strona