Petla do ..while lekcja 15 zadanie drugie
Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?
Zarejestruj się!

Petla do ..while lekcja 15 zadanie drugie

AutorWiadomość
Temat założony przez niniejszego użytkownika
Petla do ..while lekcja 15 zadanie drugie
» 2018-06-25 22:15:38
Witam,
Jeżeli zaśmiecam forum to z góry przepraszam ale jestem tutaj nowy i nie chciałem wrzucać tej wiadomości do starego tematu ponieważ bardzo zależy mi na odpowiedzi na moje pytanie związane z 2 zadaniem z lekcji wskazanej w temacie. Napisany przeze mnie kalkulator działa wg mnie całkowicie prawidłowo i zgodnie z założeniami 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.

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.

Jednakże, nie wiem czy jest prawidłowo zabezpieczony przed wprowadzeniem błędnych danych kwestie te rozwiązałem zgodnie z jedną z poprzednich lekcji, w sposób, który po wprowadzeniu błędnych danych po prostu kończy program, czy ten sposób jest prawidłowy czy powinienem to zrobić inaczej tak aby program się nie kończył tylko prosił o podanie prawidłowej liczby.

Mój kod:


#include <iostream>
#include <cstdlib>
using namespace std;
int liczba, wybor;
float suma,roznica, iloczyn, iloraz;
float wynik;

int main()
{

    do
    {
        cout<< "Obecny wynik= "<<endl;
        cout<< wynik<<endl;
        cout<<endl;
        cout<< "Podaj liczbe: ";
        cin.clear();
        cin.sync();
        cin>>liczba;

    if (liczba!=0)
    {
        cout<< "1.Dodawanie"<<endl;
        cout<< "2.Odejmowanie"<<endl;
        cout<< "3. Mnozenie"<<endl;
        cout<< "4. Dzielenie"<<endl;
        cout<< "5. Rezygnuj"<<endl;
        cout << "Wybierz jedna z powyzszych opcji: ";
    
        cin.clear();
        cin.sync();
        cin>>wybor;
        system ("cls");
    }
        switch( wybor)
        {
    case 1:
        suma=wynik+liczba;
        cout<< "Suma: "<< suma<<endl;
        wynik =wynik+suma;
        break;

    case 2:
        roznica= wynik-liczba;
        cout<< "Roznica: "<< roznica<<endl;
        wynik= wynik-liczba;
        break;
    case 3:
        iloczyn=wynik*liczba;
        cout<< "Iloczyn "<< iloczyn<<endl;
        wynik= wynik*liczba;
        break;
    case 4:
        iloraz= wynik/liczba;
        cout<< "Iloraz "<< iloraz<<endl;
        wynik= wynik/liczba;
        break;
    case 5:
        cout<< "Zrezygnowales "<<endl;
        break;
        }
    }while( (liczba!=0)&& (wybor!=5));
    return 0;
}

Z góry dziękuję za odpowiedzi.
P-171688
» 2018-06-25 23:41:10
Kod wstawiamy w znacznikach [cpp]kod[/cpp].

C/C++
int liczba, wybor;
float suma, roznica, iloczyn, iloraz;
float wynik;
Zmienne globalne? Dlaczego?

cin.sync();
Użyj
std::cin.ignore( std::numeric_limits < std::streamsize >::max(), '\n' );


system( "cls" );
Nie używaj funkcji
std::system
.

C/C++
suma = wynik + liczba;
cout << "Suma: " << suma << endl;
wynik = wynik + suma;
Zmienne
suma, roznica, iloczyn, iloraz
 są zbędne;
liczba
 oraz
wynik
 wystarczy do napisania tego. Poza tym, takie obliczenia dają błędne wyniki.

nie wiem czy jest prawidłowo zabezpieczony przed wprowadzeniem błędnych danych
Nigdzie tego nie sprawdzasz. Wpisz jakieś litery zamiast cyfr i zobacz, co się stanie.
P-171690
Temat założony przez niniejszego użytkownika
» 2018-06-30 18:37:25
Bardzo dziękuje za uwagi. Postaram się to zrobić jeszcze raz, zgodnie z tym co napisałeś, oraz będę wrzucał kod na przyszłość tak jak należy. Pozdrawiam.
P-171731
« 1 »
 Strona 1 z 1