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

Lekcja / Rozdział 15 - zadanie 2.

Ostatnio zmodyfikowano 2016-06-28 18:53
Autor Wiadomość
DanieI
Temat założony przez niniejszego użytkownika
Lekcja / Rozdział 15 - zadanie 2.
» 2016-06-28 18:31:11
Chciałem zapytać dlaczego w poniższym kodzie "obecnywynik" cały czas wynosi "1". Mnie chodzi o to aby po wykonaniu działania "obecnywynik" był równy "wynik" -owi. Tak więc proszę o pomoc.
C/C++
#include <iostream>
int main()
{
    int obecnywynik = 1;
    int wprowadzonaliczba;
    int znak;
    int wynik;
    do
    {
       
        std::cout << "Obecny wynik: " << obecnywynik << std::endl;
        std::cout << "Podaj liczbe: " << std::endl;
        std::cin >> wprowadzonaliczba;
        if( wprowadzonaliczba != 0 )
        {
            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] Rezygnuj" << std::endl;
            std::cin >> znak;
            if( znak != 0 )
            {
                switch( znak )
                {
                case 1:
                    std::cout << obecnywynik << "+" << wprowadzonaliczba << "=" << obecnywynik + wprowadzonaliczba << std::endl;
                    wynik = obecnywynik + wprowadzonaliczba;
                    break;
                case 2:
                    std::cout << obecnywynik << "-" << wprowadzonaliczba << "=" << obecnywynik - wprowadzonaliczba << std::endl;
                    wynik = obecnywynik - wprowadzonaliczba;
                    break;
                case 3:
                    std::cout << obecnywynik << "*" << wprowadzonaliczba << "=" << obecnywynik * wprowadzonaliczba << std::endl;
                    wynik = obecnywynik * wprowadzonaliczba;
                    break;
                case 4:
                    std::cout << obecnywynik << "/" << wprowadzonaliczba << "=" << obecnywynik / wprowadzonaliczba << std::endl;
                    wynik = obecnywynik / wprowadzonaliczba;
                    break;
                case 5:
                    std::cout << "Zrezygnowales" << std::endl;
                    break;
                default:
                    std::cout << "Wybralas niepoprawne dzialanie." << std::endl;
                    break;
                }
                wynik = obecnywynik;
            }
           
        }
       
    } while( wprowadzonaliczba != 0 );
   
    std::cout << "Koniec" << std::endl;
    return 0;
}
Mogę jeszcze podać treść zadania, lecz raczej nie będzie potrzebna:
Napisz prosty kalkulator, który będzie potrafił dodawać, odejmować, mnożyć i dzielić. Program ten ma działać następująco:
1. Wypisuje obecny wynik
2. Wprowadź liczbę
3. Wybierz działanie (jeżeli liczba różna od 0)
4. Wykonaj obliczenia (jeżeli liczba różna od 0)
5. Wróć do kroku 1.
6. Jeżeli wprowadzoną liczbą jest 0, zakończ program.
Przykładowe menu wyboru działania:
[1] Dodawanie
[2] Odejmowanie
[3] Mnożenie
[4] Dzielenie
[5] Rezygnuj
P-149485
Gibas11
» 2016-06-28 18:42:43
Ta linia na pewno jest źle:
wynik = obecnywynik;
Przypisujesz w złą stronę. Reszta chyba ok, ale nie wczytywałem się dokładnie.
P-149487
DanieI
Temat założony przez niniejszego użytkownika
W ogóle nie myślałem o tym że kolejność ma znaczenie.
» 2016-06-28 18:46:23
W ogóle nie myślałem o tym że kolejność ma znaczenie.

Bo skoro "=" to myślałem że w dwie strony. Dzięki i zamykam temat.
P-149488
carlosmay
» 2016-06-28 18:48:41
Można to zrobić bez użycia zmiennej 'wynik'. Np:
obecnywynik = obecnywynik / podanaliczba;
P-149489
DanieI
Temat założony przez niniejszego użytkownika
» 2016-06-28 18:53:48
@carlosmay
To znaczy masz na myśli jeszcze w switch u ??
P-149490
« 1 »
  Strona 1 z 1