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

[Lekcja 15] Praca domowa - zadanie 2

Ostatnio zmodyfikowano 2013-05-25 19:54
Autor Wiadomość
MajorKoening
Temat założony przez niniejszego użytkownika
[Lekcja 15] Praca domowa - zadanie 2
» 2013-05-23 15:41:43
Witam!
Chciałbym się dowiedzieć co robię źle

C/C++
#include <iostream>

int main()
{
   
   
    int liczba, liczba1, znak;
   
   
    std::cout << "wpisz dwie liczby na ktorych chcesz wykonac dzialanie( nie mozna wpisywac 0" << std::endl;
    std::cin >> liczba;
    std::cin >> liczba1;
   
   
    if( liczba1 != 0 && liczba != 0 )
    {
        std::cout << "Podaj rodzaj dzialania jakie chcesz wykonac" << std::endl;
        std::cout << "*******************************************" << std::endl;
        std::cout << "Wcisnij 1 zeby dodac liczbe " << liczba << " do liczby " << liczba1 << std::endl;
        std::cout << "Wcisnij 2 zeby odjac " << liczba << " od liczby " << liczba1 << std::endl;
        std::cout << "Wcisnij 3 zeby pomnozyc przez siebie " << liczba << " i " << liczba1 << std::endl;
        std::cout << "Wcisnij 4 zeby podzielic prze siebie " << liczba << " i " << liczba1 << std::endl;
    }
    else
    {
        std::cout << "Koniec, nie mozna wpisywac 0, sprobuj ponownie! " << std::endl;
        return 0;
    }
   
   
   
    do
    { std::cout << "*******************************************" << std::endl;
        std::cout << "Wpisz poprawnie znak" << std::endl;
       
        std::cin >> znak;
       
       
        switch( znak )
        {
        case 1:
            std::cout << "Wynik dodawania to= " <<( liczba + liczba1 ) << std::endl;
            break;
        case 2:
            std::cout << "Wynik odejmowania to= " <<( liczba - liczba1 ) << std::endl;
            break;
        case 3:
            std::cout << "Wynik mnozenia to= " <<( liczba * liczba1 ) << std::endl;
            break;
        case 4:
            std::cout << "wynik dzielenia to= " <<( liczba / liczba1 ) << std::endl;
           
        }
    } while( znak != 1, 2, 3, 4 );
   
}

Otóż mój błąd polega na tym, że gdy użytkownik kalkulatora poprawnie wpisze znak i dostanie wynik, to od nowa pokazuje się, żeby wpisał poprawnie znak, gdzie popełniłem błąd. W moim rozumowaniu to było tak żeby zapętlało się to cały czas od tego "do" wtedy gdy uzytkownik wpisze znak !=1,2,3,4  Czy to powinno byc jakos inaczej?

Pozdrawiam!
P-83702
pekfos
» 2013-05-23 15:46:10
C/C++
} while( znak != 1, 2, 3, 4 );

To z pewnością nie robi tego, czego oczekujesz.
P-83703
MajorKoening
Temat założony przez niniejszego użytkownika
» 2013-05-23 16:35:06
Udało mi się to naprawić ale musiałem zrobić 4 dodatkowe zmienne. Możecie powiedzieć jak to zrobić bez tworzenia tych zmiennych?
C/C++
#include <iostream>

int main()
{
   
    int taka = 1;
    int taka1 = 2;
    int taka2 = 3;
    int taka3 = 4;
    int liczba, liczba1, znak;
   
   
   
    std::cout << "wpisz dwie liczby na ktorych chcesz wykonac dzialanie( nie mozna wpisywac 0" << std::endl;
    std::cin >> liczba;
    std::cin >> liczba1;
   
   
    if( liczba1 != 0 && liczba != 0 )
    {
        std::cout << "Podaj rodzaj dzialania jakie chcesz wykonac" << std::endl;
        std::cout << "*******************************************" << std::endl;
        std::cout << "Wcisnij 1 zeby dodac liczbe " << liczba << " do liczby " << liczba1 << std::endl;
        std::cout << "Wcisnij 2 zeby odjac " << liczba << " od liczby " << liczba1 << std::endl;
        std::cout << "Wcisnij 3 zeby pomnozyc przez siebie " << liczba << " i " << liczba1 << std::endl;
        std::cout << "Wcisnij 4 zeby podzielic prze siebie " << liczba << " i " << liczba1 << std::endl;
    }
    else
    {
        std::cout << "Koniec, nie mozna wpisywac 0, sprobuj ponownie! " << std::endl;
        return 0;
    }
   
   
   
    do
    { std::cout << "*******************************************" << std::endl;
        std::cout << "Wpisz poprawnie znak" << std::endl;
       
        std::cin >> znak;
       
    } while( znak != taka && znak != taka1 & znak != taka2 && znak != taka3 );
   
   
    switch( znak )
    {
    case 1:
        std::cout << "Wynik dodawania to= " <<( liczba + liczba1 ) << std::endl;
        break;
    case 2:
        std::cout << "Wynik odejmowania to= " <<( liczba - liczba1 ) << std::endl;
        break;
    case 3:
        std::cout << "Wynik mnozenia to= " <<( liczba * liczba1 ) << std::endl;
        break;
    case 4:
        std::cout << "wynik dzielenia to= " <<( liczba / liczba1 ) << std::endl;
       
    }
}
P-83709
pekfos
» 2013-05-23 16:51:54
Możecie powiedzieć jak to zrobić bez tworzenia tych zmiennych?
Nie twórz ich? Masz je tu tylko po to, by trzymały jakąś niezmienną wartość, więc po co ci do tego zmienne?
P-83712
Berux
» 2013-05-23 17:29:44
Zrób tak, jak napisał mój przedmówca, a w pętli zmienne zastąp odpowiednimi liczbami.
P-83716
Forczek
» 2013-05-23 19:16:05
Dopatrzyłem się chyba jednego błędu:
while( znak != taka && znak != taka1 & znak != taka2 && znak != taka3 );
 A dokładnie w
znak != taka1 & znak != taka2
 brakuje jednego znaku, powinno być:
znak != taka1 && znak != taka2
P-83726
kamillo123567
» 2013-05-25 15:58:50
Ja zrobiłem to tak:
C/C++
#include <iostream>
int main()
{
    int a = 0;
    int b = 0;
    int c;
    int d = 0;
    int e = 1;
    do
    {
        std::cout << "Obecny wynik:" << d << std::endl;
        std::cout << "Wybierz dzialanie:" << 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::cout << "5.Wroc" << std::endl;
        std::cin >> c;
        std::cout << "Wpisz 'a'" << std::endl;
        std::cin >> a;
        std::cout << "Wpisz 'b'" << std::endl;
        std::cin >> b;
        if( a && b > 0 )
        switch( c )
        {
        case 1:
            d =( a + b );
            std::cout << d << std::endl;
            break;
        case 2:
            d =( a - b );
            std::cout << d << std::endl;
            break;
        case 3:
            d =( a * b );
            std::cout << d << std::endl;
            break;
        case 4:
            d =( a / b );
            std::cout << d << std::endl;
            break;
        case 5:
            std::cout << "Wrociles" << std::endl;
            break;
        default:
            std::cout << "Wrociles" << std::endl;
            break;
        }
        else
        { std::cout << "Koniec";
            e = 0;
        }
    } while( e != 0 );
   
    return 0;
}
Tylko nie bardzo wiem jak zrobić tak, żeby wróciło do punktu 1.go.

PS. Jak zrobić tą ramkę jak powyżej(tą z kodem)
P-83839
pekfos
» 2013-05-25 16:20:31
Tylko nie bardzo wiem jak zrobić tak, żeby wróciło do punktu 1.go.
Użyj pętli.

PS. Jak zrobić tą ramkę jak powyżej(tą z kodem)
[cpp][/cpp]
P-83844
« 1 » 2
  Strona 1 z 2 Następna strona