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

Rozdział 15 praca domowa kalkulator

Ostatnio zmodyfikowano 2015-07-16 16:28
Autor Wiadomość
Xercis
Temat założony przez niniejszego użytkownika
Rozdział 15 praca domowa kalkulator
» 2015-07-09 13:40:48
Witam mam problem napisałem kalkulator tak jak trzeba tylko jedna opcja mi nie działa mianowicie gdy a będzie wynosić 0 lub b będzie wynosić 0 to powinien mi program się zamknąć a tak nie jest zamyka się dopiero wtedy gdy mam do wyboru 5 wariantów i wpisze 0  o to mój kod
C/C++
#include <iostream>
using namespace std;
int main()
{
    int wybor;
    int a, b;
   
    cout << "\t\t********************************" << endl;
    cout << "\t\t* witaj w kalkulatorze Xercisa *" << endl;
    cout << "\t\t*         wersja v2.0          *" << endl;
    cout << "\t\t*         milej zabawy         *" << endl;
    cout << "\t\t********************************" << endl;
   
   
    do {
        do { cout << "\npodaj liczbe a: ";
            cin.clear();
            cin.sync();
            cin >> a;
            if( cin.fail() )
                 cout << "\nnie podales liczby a " << endl;
           
            if( cin.good() );
           
        } while( !cin.good() );
       
        do {
            cout << "\npodaj liczzbe b: ";
            cin.clear();
            cin.sync();
            cin >> b;
            if( cin.fail() )
                 cout << "\nnie podales liczby b " << endl;;
            if( cin.good() );
           
        } while( !cin.good() );
       
        cout << "\n\nwybierz dzialanie ";
       
        do {
            cout << "\n\n1 dodawanie " << endl;
            cout << "2 odejmowanie " << endl;
            cout << "3 mnozenie " << endl;
            cout << "4 dzielenie " << endl;
            cout << "5 rezygnuj " << endl;
            cin.clear();
            cin.sync();
            cin >> wybor;
            if( cin.fail() )
                 cout << "\nnie wybrales zadnego wariantu " << endl;
           
            if( cin.good() )
                 cout << "\nwybrales wariant " << wybor;
           
        } while( !cin.good() );
       
       
        switch( wybor )
        {
           
           
        case 1:
            cout << "\nwybrales dodawanie ";
            cout << "\nwynik " << a + b;
            break;
           
        case 2:
            cout << "\nwybrales odejmowanie ";
            cout << "\nwynik " << a - b;
            break;
           
        case 3:
            cout << "\nwybrales mnozenie ";
            cout << "\nwynik " << a * b;
            break;
           
        case 4:
            cout << "\nwybrales dzielenie ";
            cout << "\nwynik " << a / b;
            break;
           
        case 5:
            cout << "\nrezygnujesz ";
            break;
        }
    } while( a != 0 || b != 0 );
   
    cout << "\nkoniec programu";
    return 0;
   
}
P-134500
darko202
» 2015-07-09 13:49:34
skoro znasz warunek po którym należy przerwać program

if( a==0 && b==0)
  return;

to powinieneś go dodać w odpowiednim miejscu kodu
tzn gdzieś przed 

cin >> wybor;

P-134501
pekfos
» 2015-07-09 13:52:00
mianowicie gdy a będzie wynosić 0 lub b będzie wynosić 0 to powinien mi program się zamknąć
C/C++
while( a != 0 || b != 0 );

W kodzie napisałeś, że pętla skończy się gdy obie wartości będą zerami, a nie jedna z nich. Podobnie jak tu, piszesz program niezgodnie z treścią zadania..
[Rozdział 15] Proszę o sprawdzenie zadania

a tak nie jest zamyka się dopiero wtedy gdy mam do wyboru 5 wariantów i wpisze 0
Bo pytasz usera o wariant niezależnie od podanych wcześniej wartości.
P-134502
Deivid
» 2015-07-09 14:55:44
Pekfos - zamknałeś mój temat, zgodnie z regulaminem. Aby nie zaśmiecać forum i ewentualnie pomóc autorowi tematu i sobie.
Aby zgodnie z poleceniem program zamykał się przy wprowadzeniu zmiennej=0
wystarczy w kodzie wprowadzić warunek
if( a == 0 ) { return 0; }
 ?

PS. Do autora. To samo co mi napisał Pekfos w moim temacie, musisz użyć tylko jednej zmiennej do wprowadzania liczb i jednej zmiennej do wyboru w switch.
P-134507
Elefant
» 2015-07-13 15:28:15
#include <iostream>

using namespace std;


int main()
{
    int liczba1;
    int liczba2;
    int dzialanie;

do
{


    cout <<  "Podaj liczbe a: ";
    cin >> liczba1;
    if(cin.fail())
        do
            {
                cin.clear();
                cin.sync();
                cout << "Podana liczba jest nie prawidlowa, sprobuj jeszcze raz: ";
                cin >> liczba1;
            }while(cin.fail());


    cout << "Podaj liczbe b: ";
    cin >> liczba2;
    if (cin.fail())
        do
            {
                cin.clear();
                cin.sync();
                cout << "Podana liczba jest nie prawidlowa, sprobuj jeszcze raz: ";
                cin >> liczba2;
            }while(cin.fail());


    if (liczba1!=0 && liczba2!=0)
    {
        do
        {
            cin.clear();
            cin.sync();
            cout << "Wybierz dzialanie ktore ma zostac wykonane:" << endl;
            cout << "[1] dodawanie" << endl;
            cout << "[2] odejmowanie" << endl;
            cout << "[3] mnozenie" << endl;
            cout << "[4] dzielenie"<< endl;
            cin >> dzialanie;
        }while(cin.fail());
       
                switch(dzialanie)
                    {
                        case 1:
                            cout << "Wybrano opcje dodawania = ";
                            cout << (liczba1+liczba2);
                            break;
                        case 2:
                            cout << "Wybrano opcje odejmowania = ";
                            cout << (liczba1-liczba2);
                            break;
                        case 3:
                            cout << "Wybrano opcje mnozenia = ";
                            cout << (liczba1*liczba2);
                            break;
                        case 4:
                            cout << "Wybrano opcje dzielenia = ";
                            cout << (liczba1/liczba2);
                            break;
                    }cout << endl;cout <<endl;

            }

}while(liczba1!=0 && liczba2!=0);

}


czy ten kod jest zgodny z treścia zadania?
P-134623
Deivid
» 2015-07-16 16:28:28
Elefant - Niestety jest źle.
Musisz mieć wynik do którego dodasz zmienną liczbę. A wiec w pierwszym działaniu Twoim wynikiem jest 0, i do niego dodajesz następujące zmienne. Pętla ma do poprzedniego wyniku wykonać działanie na nowej liczbie.
A więc:
C/C++
float zmienna_a;
//robisz ja w petli by sprawdzilo poprawność

//w switchu piszesz cos takiego:
case 1:
{
    cout << "dodawanie: " << wynik << "+" << zmienna_a << "=";
    wynik += zmienna_a;
    cout << wynik;


EDIT: Przepraszam, pomyliły mi się lekcje.
P-134764
« 1 »
  Strona 1 z 1