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

Lekcja 15 - Kalkulator ( nie wiem czy dobrze zrozumialem)

Ostatnio zmodyfikowano 2012-10-21 08:45
Autor Wiadomość
przemko06
Temat założony przez niniejszego użytkownika
Lekcja 15 - Kalkulator ( nie wiem czy dobrze zrozumialem)
» 2012-10-17 22:37:11
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.

Mam to rozumieć tak że jeżeli wpiszę pierwszą liczbę np 0 to program od razu zakończy działanie? Bo mam narazie zrobione tak że jak wpisze pierwszą liczbę np 0 a potem np 20 i wybiorę działanie, to program je wykona ale zakończy działanie. Tak samo jeżeli podał bym na drugim miejscu zero albo działanie 0 albo same zera to zakończy działania. Ale jeżeli chodzi że jak podam pierwsza liczbę i ma od razu zakończyć to nie wiem jak to zrobić i wtedy proszę o pomoc....

Program poniżej:



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

int main()
{
    cout << "***************************************" << endl;
    cout << "***************************************" << endl;
    cout << "****** KALKULATOR 1.1 by przemko ******" << endl;
    cout << "***************************************" << endl;
    cout << "********* All rights reserved *********" << endl;
    cout << "***************************************" << endl;
    cout << "***************************************";
   
   
   
    int pierwsza, druga;
    bool spr1, spr2;
    int dzialanie;
   
    do
    {
       
       
        do
        { cout << "\n\nWprowadz pierwsza liczbe:  ";
            cin >> pierwsza;
            spr1 = cin.fail();
            cin.clear();
            cin.sync();
        } while( spr1 == 1 );
       
        cout << "----------------------------\n";
       
        do
        { cout << "Wprowadz druga liczbe:     ";
            cin >> druga;
            spr2 = cin.fail();
            cin.clear();
            cin.sync();
        } while( spr2 == 1 );
       
        cout << "----------------------------" << endl;
       
        cout << "\n**MENU**" << endl;
        cout << "[1] Dodawanie" << endl;
        cout << "[2] Odejmowanie" << endl;
        cout << "[3] Mnozenie" << endl;
        cout << "[4] Dzielenie" << endl;
        cout << "[5] Rezygnuj" << endl;
       
       
        do
        { cout << "\nCo chcesz zrobic? Wpisz odpowiednia liczbe: ";
            cin >> dzialanie;
           
            switch( dzialanie )
            {
            case 1:
                cout << "\nDzialanie:   " << pierwsza << " + " << druga << " = " << pierwsza + druga << "\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^" << endl;
                break;
               
            case 2:
                cout << "\nDzialanie:   " << pierwsza << " - " << druga << " = " << pierwsza - druga << "\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^" << endl;
                break;
               
            case 3:
                cout << "\nDzialanie:   " << pierwsza << " * " << druga << " = " << pierwsza * druga << "\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^" << endl;
                break;
               
            case 4:
                cout << "\nDzialanie:   " << pierwsza << " / " << druga << " = " << pierwsza / druga << "\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^" << endl;
                break;
               
            case 5:
                cout << "\nRezygnuj";
                break;
               
            default:
                cout << "\nZly wybor! Sprobuj ponownie!\n\n";
                break;
               
            }
        } while( dzialanie > 5 );
       
       
    } while( pierwsza && druga && dzialanie > 0 );
   
    return 0;
}
P-67005
Gumovvy
» 2012-10-17 22:47:42
Dodaj sobie w case jako 0 zakonczenie porgamu.
P-67006
przemko06
Temat założony przez niniejszego użytkownika
» 2012-10-18 00:09:13
mam rozumieć że chodzi o coś takiego:


C/C++
case 0:
cout << "Zakonczenie programu";
break;

jak tak to chyba lepiej by było jakbym napisał coś takiego przed return:

cout << "Zakonczenie programu";

hmm tylko że to nic nie daje do mojego zadanego pytania...


Edit:

A jednak troszkę dało :P
Zrobiłem to tak

C/C++
case 0:
break;

ale nie o to mi chodziło w pytaniu.
Chyba że tylko tyle chodziło w zadani...? I jeszcze jestem ciekawy czy ten program co napisałem można krócej napisać...?
P-67009
Adam3423
» 2012-10-18 13:27:03
W tym zadaniu trzeba zrobic cos takiego ze masz aktualny wynik tzn na poczatku zero pozniej podajesz liczbe wybierasz dzialanie i w ten sposob wynik sie zmienia , a podajac kolejna liczbe i kolejne działanie korzystasz ciągle z aktualnego wyniku i wypisujesz go po kazdym działaniu jezeli dobrze rozumiem. Poszukaj sobie na forum wiele osob juz o to zadanie pytalo.
P-67018
przemko06
Temat założony przez niniejszego użytkownika
» 2012-10-18 23:07:49
hmm ok.
Więc napisałem teraz coś takiego i nie wiem co zrobiłem nie tak :/ po wybraniu dowolnej liczby program wariuje.

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

int main()
{
    cout << "***************************************" << endl;
    cout << "***************************************" << endl;
    cout << "******** KALKULATOR by przemko ********" << endl;
    cout << "***************************************" << endl;
    cout << "********* All rights reserved *********" << endl;
    cout << "***************************************" << endl;
    cout << "***************************************";
   
   
    float liczba, wynik;
    bool spr;
    int menu;
   
    wynik = wynik + liczba;
   
    do
    {
        cout << "\nWynik:  " << wynik << endl;
       
        do
        {
            cout << "Podaj liczbe:  ";
            cin >> liczba;
            spr = cin.good();
            cin.clear();
            cin.sync();
           
            if( spr == 0 )
                 cout << "Chyba cos nie tak :/ Sprobuje ponownie!\n\n\n";
           
        } while( spr == 0 );
       
        cout << "[1] Dodawanie" << endl;
        cout << "[2] Odejmowanie" << endl;
        cout << "[3] Mnozenie" << endl;
        cout << "[4] Dzielenie" << endl;
        cout << "[5] Reset" << endl;
        cout << "[0] Wyjscie" << endl;
       
        do
        {
           
            switch( menu )
            {
            case 1:
                cout << "\nDzialanie:   " << wynik << " + " << liczba << " = " << wynik + liczba << endl;
                break;
               
            case 2:
                cout << "\nDzialanie:   " << wynik << " - " << liczba << " = " << wynik - liczba << endl;
                break;
               
            case 3:
                cout << "\nDzialanie:   " << wynik << " * " << liczba << " = " << wynik * liczba << endl;
                break;
               
            case 4:
                cout << "\nDzialanie:   " << wynik << " / " << liczba << " = " << wynik / liczba << endl;
                break;
               
            case 5:
                cout << "\nReset wyniku";
                break;
               
            case 0:
                cout << "\n\t***KONIEC***";
                break;
               
            default:
                cout << "\nZly wybor :// Sprobuj ponownie!";
                break;
            }
           
        } while( menu > 5 );
       
    } while( menu != 0 );
   
   
   
    return 0;
}


EDIT:
A dobra juz wiem co źle zrobiłem.
Zapomniałem dodać przed switchem   cin >> menu;    :D
P-67061
przemko06
Temat założony przez niniejszego użytkownika
» 2012-10-19 00:33:23
Ok zrobiłem to.
Mam nadzieje że o to chodziło w tym zadaniu!

Zadanie 15 Kalkulator:

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

int main()
{
    cout << "***************************************" << endl;
    cout << "***************************************" << endl;
    cout << "******** KALKULATOR by przemko ********" << endl;
    cout << "***************************************" << endl;
    cout << "********* All rights reserved *********" << endl;
    cout << "***************************************" << endl;
    cout << "***************************************";
   
   
    float liczba, wynik;
    bool spr;
    int menu;
   
   
    wynik = 0;
   
    cout << "\nWynik:  " << wynik << endl;
   
    do
    {
       
       
        do
        {
            cout << "\nPodaj liczbe:  ";
            cin >> liczba;
            spr = cin.good();
            cin.clear();
            cin.sync();
           
            if( spr == 0 )
                 cout << "Chyba cos nie tak :/ Sprobuje ponownie!\n\n\n";
           
        } while( spr == 0 );
       
       
        cout << "[1] Dodawanie" << endl;
        cout << "[2] Odejmowanie" << endl;
        cout << "[3] Mnozenie" << endl;
        cout << "[4] Dzielenie" << endl;
        cout << "[5] Reset" << endl;
        cout << "[0] Wyjscie" << endl;
       
       
        do
        {
            cout << "Wybierz dzialanie: ";
            cin >> menu;
            cin.clear();
            cin.sync();
           
            switch( menu )
            {
            case 1:
                float wynik1;
                wynik1 = wynik + liczba;
                cout << "\nDzialanie:   " << wynik << " + " << liczba << " = " << wynik1 << endl;
                wynik = wynik1;
                cout << "\nWynik:  " << wynik << endl;
                break;
               
            case 2:
                float wynik2;
                wynik2 = wynik - liczba;
                cout << "\nDzialanie:   " << wynik << " - " << liczba << " = " << wynik - liczba << endl;
                wynik = wynik2;
                cout << "\nWynik:  " << wynik << endl;
                break;
               
            case 3:
                float wynik3;
                wynik3 = wynik * liczba;
                cout << "\nDzialanie:   " << wynik << " * " << liczba << " = " << wynik * liczba << endl;
                wynik = wynik3;
                cout << "\nWynik:  " << wynik << endl;
                break;
               
            case 4:
                float wynik4;
                wynik4 = wynik / liczba;
                cout << "\nDzialanie:   " << wynik << " / " << liczba << " = " << wynik / liczba << endl;
                wynik = wynik4;
                cout << "\nWynik:  " << wynik << endl;
                break;
               
            case 5:
                cout << "\n!!!Reset wyniku!!!\n\n";
                break;
               
            case 0:
                cout << "\n\n\n\t*********KONIEC*********\n\n\n";
                break;
               
            default:
                cout << "\nZly wybor :// Sprobuj ponownie!\n";
                break;
            }
           
        } while( menu > 5 );
       
       
        if( menu == 5 )
             wynik = 0;
       
       
       
    } while( menu != 0 );
   
   
   
    return 0;
}
P-67062
Adam3423
» 2012-10-19 18:10:02
Nom o to chodzilo ;)
Tylko zobacz co sie dzieje przy dzieleniu przez 0

P-67094
przemko06
Temat założony przez niniejszego użytkownika
» 2012-10-21 08:45:42
Ok. Naprawione ;)

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

int main()
{
    cout << "***************************************" << endl;
    cout << "***************************************" << endl;
    cout << "******** KALKULATOR by przemko ********" << endl;
    cout << "***************************************" << endl;
    cout << "********* All rights reserved *********" << endl;
    cout << "***************************************" << endl;
    cout << "***************************************";
   
   
    float liczba, wynik;
    bool spr;
    int menu;
   
   
    wynik = 0;
   
    cout << "\nWynik:  " << wynik << endl;
   
    do
    {
       
       
        do
        {
            cout << "\nPodaj liczbe:  ";
            cin >> liczba;
            spr = cin.good();
            cin.clear();
            cin.sync();
           
            if( spr == 0 )
                 cout << "Chyba cos nie tak :/ Sprobuje ponownie!\n\n\n";
           
        } while( spr == 0 );
       
        cout << "*****************" << endl;
        cout << "[1] Dodawanie" << endl;
        cout << "[2] Odejmowanie" << endl;
        cout << "[3] Mnozenie" << endl;
        cout << "[4] Dzielenie\n" << endl;
        cout << "[5] Reset" << endl;
        cout << "[0] Wyjscie" << endl;
        cout << "*****************\n" << endl;
       
       
        do
        {
            cout << "Wybierz dzialanie: ";
            cin >> menu;
            cin.clear();
            cin.sync();
           
            switch( menu )
            {
            case 1:
                float wynik1;
                wynik1 = wynik + liczba;
                cout << "\nDzialanie:   " << wynik << " + " << liczba << " = " << wynik1 << endl;
                wynik = wynik1;
                cout << "\nWynik:  " << wynik << endl;
                break;
               
            case 2:
                float wynik2;
                wynik2 = wynik - liczba;
                cout << "\nDzialanie:   " << wynik << " - " << liczba << " = " << wynik - liczba << endl;
                wynik = wynik2;
                cout << "\nWynik:  " << wynik << endl;
                break;
               
            case 3:
                float wynik3;
                wynik3 = wynik * liczba;
                cout << "\nDzialanie:   " << wynik << " * " << liczba << " = " << wynik * liczba << endl;
                wynik = wynik3;
                cout << "\nWynik:  " << wynik << endl;
                break;
               
            case 4:
                if( liczba == 0 )
                { menu = 7;
                    cout << "\nNie mozna dzielic przez " 0 "";
                }
                else
                { float wynik4;
                    wynik4 = wynik / liczba;
                    cout << "\nDzialanie:   " << wynik << " / " << liczba << " = " << wynik / liczba << endl;
                    wynik = wynik4;
                    cout << "\nWynik:  " << wynik << endl;
                }
                break;
               
            case 5:
                cout << "\n!!!Reset wyniku!!!\n\n";
                break;
               
            case 0:
                cout << "\n\n\n\t*********KONIEC*********\n\n\n";
                break;
               
            default:
                cout << "\nZly wybor :// Sprobuj ponownie!\n";
                break;
            }
           
        } while( menu > 5 );
       
       
        if( menu == 5 )
             wynik = 0;
       
       
       
    } while( menu != 0 );
   
   
   
    return 0;
}

do case 4:  Zastosowałem coś takiego:

          
C/C++
case 4:
if( liczba == 0 )
{ menu = 7;
    cout << "\nNie mozna dzielic przez " 0 "";
}
else
{ float wynik4;
    wynik4 = wynik / liczba;
    cout << "\nDzialanie:   " << wynik << " / " << liczba << " = " << wynik / liczba << endl;
    wynik = wynik4;
    cout << "\nWynik:  " << wynik << endl;
}
break;
P-67202
« 1 »
  Strona 1 z 1