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

Rodział 15. Pętla do... while \ Zadanie domowe

Ostatnio zmodyfikowano 2017-12-08 17:06
Autor Wiadomość
woocaschel
Temat założony przez niniejszego użytkownika
Rodział 15. Pętla do... while \ Zadanie domowe
» 2017-07-31 21:08:37
Witam. Jestem od niedawna w grupie. Dużo problemów mam z 2 częścią zadania. Otóż, nie mogę wpaść na to co w swoim kodzie dodac/usunąc.
Treść zadania:
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
Zabezpiecz wcześniej napisany kalkulator przed podawaniem niepoprawnych liczb i operacji. Wykorzystaj wiedzę zdobytą z pierwszego zadania pracy domowej niniejszego rozdziału. Zabezpiecz również w analogiczny sposób przed możliwością wyboru nieprawidłowego działania.

Nie mogę wykonac kroku 5

Proszę o pomoc:

#include <iostream>

using namespace std;

int main()
{
        int wynik = 0;
        int a, b, roznica, suma, iloczyn, iloraz;
        int wybor;

        if (wynik==0)
        do
        {
            cout << "Witaj!" << endl;
            cout << "Wynik = " << wynik << endl;
            cout << endl;
            cout << "Podaj 1 liczbe: ";
            cin >> a;
            cin.clear();
            cin.sync();

            cout << "Podaj 2 liczbe: ";
            cin >> b;
            cin.clear();
            cin.sync();

                cout << "================" << endl;
                cout << "=     Menu     =" << endl;
                cout << " [1] Dodawanie  " << endl;
                cout << " [2] Odejmowanie" << endl;
                cout << " [3] Mnozenie   " << endl;
                cout << " [4] Dzielenie  " << endl;
                cout << " [5] Rezygnuj   " << endl;
                cin >> wybor;
                cin.clear();
                cin.sync();
                switch (wybor)
                    {
                    case 1:
                        {
                            suma=a+b;
                            cout << "Wynik = " << suma << endl;
                            break;
                        }
                    case 2:
                        {
                            roznica=a-b;
                            cout << endl;
                            cout << "Wynik = " <<roznica << endl;
                            break;
                        }
                    case 3:
                        {
                            iloczyn=a*b;
                            cout << endl;
                            cout << "Wynik = " <<iloczyn << endl;
                            break;
                        }
                    case 4:
                        {
                            iloraz=a/b;
                            cout << endl;
                            cout << "Wynik = " <<iloraz << endl;
                            break;
                        }
                    case 5:
                        {
                            cout << endl;
                            break;
                        }
                    }

        } while (a!=0 && b!=0);

        cout << "koniec" << endl;

    return 0;
}


 
P-163731
kistel66
» 2017-07-31 21:33:25
Po pierwsze - na samym początku masz zadeklarowaną zmienną wynik, z którą nic nie robisz. Albo ją usuń, albo (tak jak chyba zakładał autor kursu) zmieniaj jej wartość w switchu:
C/C++
case 1:
{
    suma = a + b;
    cout << "Wynik = " << suma << endl;
    wynik += suma; //np tak
    break;
}
 
Jak zrobić, żeby po kliknięciu 5 wyszło z pętli? Masz zmienną wybór, w której przechowujesz decyzję użytkownika. Masz też pętlę do.. while
C/C++
do
{
   
    //jakies tam instrukcje
} while( a != 0 && b != 0 );


Dlaczego by nie dopisać do niej kolejnego warunku? Takiego, który by sprawdzał, czy nie podano piątej opcji?
P-163732
woocaschel
Temat założony przez niniejszego użytkownika
» 2017-07-31 22:22:15
Dzięki. No za długo siedziałem nad tym. Zrobiłem przerwę poprawiłem. Dziekuje za pomoc.
P-163733
Mateusin26
» 2017-08-25 20:42:40
//del
P-164301
zirike
» 2017-09-11 15:44:21
Ja mam troszkę inny problem, to tylko czesc kalkulatora ale reszta narazie nie jest potrzebna. Chodzi o to, żeby przy wyborze opcji dodaj i po ukazaniu wyniku np 0 +4 = 4, petla wracala i przy ponownym wyborze funkcji kalkulatora dodaj wygladalo to juz wynik = wynik(stary) + liczba. Tak zebym mogl w nieskonczonosc uzywac funkcji kalkulatora, aż nie wybiore "[5] Rezygnacja" < ktore by mnie cofalo do menu wyboru lub [0] Zakoncz program. Wklejam narazie kod gdzie jest tylko dodawanie, bo i tak nie ma sensu dodawac reszty skoro juz na poczatku jest jakis blad, ktorego nie moge znalezc. Prosilbym o pomoc i jakies krotkie wyjasnienie gdzie jest blad



C/C++
#include <iostream>
using namespace std;

main() {
   
    double wynik;
    double liczba;
    int wybor;
    cout << "Wynik: " << 0 << endl;
   
   
   
    do {
       
        cout << endl << "Menu kalkulatora" << endl << "[0] Zakoncz " << endl << "[1] Dodawanie" << endl << "[2] Odejmowanie" << endl << "[3] Mnozenie" << endl << "[4] Dzielenie" << endl << "[5] Rezygnacja" << endl << endl;
        cin >> wybor;
        cin.clear();
        cin.sync();
       
       
        switch( wybor ) {
           
           
        case 1:
            {
                cout << "Wprowadz liczbe: " << endl;
                cin >> liczba;
                wynik = wynik + liczba;
                cout << "Wynik: " << wynik << endl;
                break;
            }
           
        }
    } while( wybor > 1 && wybor < 6 );
   
    cout << "koniec";
   
    return 0;
}
P-164788
karambaHZP
» 2017-09-11 17:47:58
Chodzi o to, żeby przy wyborze opcji dodaj i po ukazaniu wyniku np 0 +4 = 4, petla wracala i przy ponownym wyborze funkcji kalkulatora dodaj wygladalo to juz wynik = wynik(stary) + liczba.
Dodaj zmienną, ktora będzie przechowywać wartość obecnego wyniku (przed obliczeniem nowej wartości wynik).
Zmienna wynik jest niezainicjalizowana (przypadkowa wartość).
Zwiększ poziom ostrzeżeń kompilatora, aby informował Cię o próbie użycia niezainicjalizowanej zmiennej.
P-164790
tomis69
» 2017-12-08 17:06:35
Witajcie. Czy mój kod jest pełnym rozwiązaniem zadania?? Jeżeli nie to powiedzcie co muszę zmienić :)


#include <iostream>

using namespace std;

int main()
{

int dzialanie,liczbaA,liczbaB;
do
{
    do
    {
cout << "Podaj pierwsza liczbe: " << endl;
cin >> liczbaA;
}while(liczbaA==0);
    do
{
cout << "Podaj druga liczbe: " << endl;
cin >> liczbaB;
}while(liczbaB==0);
cout << "Wybierz dzialanie: " << endl << "[1] Dodawanie" << endl << "[2] Odejmowanie" << endl << "[3] Mnozenie" << endl << "[4] Dzielenie" << endl << "[5] Rezygnuj" << endl;
cin >> dzialanie;
switch (dzialanie)
{
case 1:
    cout << liczbaA << "+" << liczbaB << "=" << liczbaA + liczbaB << endl;
    break;
case 2:
    cout << liczbaA << "-" << liczbaB << "=" << liczbaA - liczbaB << endl;
    break;
case 3:
    cout << liczbaA << "*" << liczbaB << "=" << liczbaA * liczbaB << endl;
    break;
case 4:
    cout << liczbaA << "/" << liczbaB << "=" << liczbaA / liczbaB << endl;
    break;
    default:
    cout << "Bledny wybor: " << endl;
    break;
}
}while(dzialanie!=0);

cout << "Koniec" << endl;
return 0;
}


P-167733
« 1 »
  Strona 1 z 1