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

Pętla do ... while - zadanie domowe.

Ostatnio zmodyfikowano 2011-07-01 18:14
Autor Wiadomość
asia97
Temat założony przez niniejszego użytkownika
Pętla do ... while - zadanie domowe.
» 2011-07-01 17:19:37
To moje początki oraz pierwszy temat na forum więc proszę o wyrozumiałość :) .
Otóż mam problem z zadaniem:
'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.'
Oto mój kod:

C/C++
#include <iostream>
int main()
{
    int liczba1;
    int liczba2;
    int numer;
    int wynik;
   
    do
    {
        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 >> numer;
        switch( numer )
        {
        case 1:
            {
                std::cout << "Podaj liczbe: " << std::endl;
                std::cin >> liczba1;
                std::cout << "Podaj liczbe: " << std::endl;
                std::cin >> liczba2;
                wynik = liczba1 + liczba2;
                std::cout << "wynik: " << wynik;
                break;
            }
            {
            case 2:
                std::cout << "Podaj liczbe: " << std::endl;
                std::cin >> liczba1;
                std::cout << "Podaj liczbe: " << std::endl;
                std::cin >> liczba2;
                wynik = liczba1 - liczba2;
                std::cout << "wynik: " << wynik;
                break;
            }
            {
            case 3:
                std::cout << "Podaj liczbe: " << std::endl;
                std::cin >> liczba1;
                std::cout << "Podaj liczbe:" << std::endl;
                std::cin >> liczba2;
                wynik = liczba1 * liczba2;
                std::cout << "wynik: " << wynik;
                break;
            }
            {
            case 4:
                std::cout << "Podaj liczbe: " << std::endl;
                std::cin >> liczba1;
                std::cout << "Podaj liczbe: " << std::endl;
                std::cin >> liczba2;
                if( liczba2 == 0 )
                     std::cout << "Dzielnik nie moze byc zerem!";
                else;
               
                wynik = liczba1 / liczba2;
                std::cout << "wynik: " << wynik;
                break;
            }
        }
    } while( liczba1 == 0 );
   
    return 0;
}
I teraz tak:
Kalkulator radzi sobie z liczeniem, ale po wykonaniu obliczenia się kończy. Co muszę dopisać żeby  program wrócił na sam początek ? I jeszcze jedno. Czy zmienna bool musi znajdować się po każdej linijce 'std::cin >> liczba1;' i ' std::cin >> liczba2;' żeby liczby były zabezpieczone ?
Z góry dziękuję za pomoc i pozdrawiam :)
P-35114
SeaMonster131
» 2011-07-01 17:24:30
Kalkulator radzi sobie z liczeniem, ale po wykonaniu obliczenia się kończy
masz tak:
C/C++
do
{
    //...
} while( liczba1 == 0 );
Więc możesz sobie to tak przetłumaczyć:
C/C++
rob
{
    //to...
} dopoki( liczba1 == 0 );
Więc pętla bd sie wykonywać, kiedy wprowdzona liczba to 0 :)
P-35116
Dawidsoni
» 2011-07-01 17:30:52
Zrobiłeś głupi błąd. Pętla ma się wykonywać DO PUKI liczba jest RÓŻNA od zera, a nie równa zero. Czyli zamiast liczba1==0, napisz liczba1!=0. Instrukcje: podaj 1 liczbę i 2 liczbę mogłeś umieścić przed case 1,2... . (nie jest to błąd, ale strata czasu). W case 1,2... wystarczy tylko np.: wynik = liczba1 + liczba2.

Kod umieszczaj w
[ cpp ]
[/cpp]
P-35119
asia97
Temat założony przez niniejszego użytkownika
» 2011-07-01 17:47:01
Poprawiłam :) a jak będzie z tym zabezpieczeniem kalkulatora ?
P-35124
szyx_yankez
» 2011-07-01 17:59:14
Prościej byłoby gdybyś liczby wprowadzała przed "switch'em" a nie w każdym "case".
Wtedy wystarczyło by tylko raz sprawdzić poprawność wprowadzonych danych.
P-35125
asia97
Temat założony przez niniejszego użytkownika
» 2011-07-01 18:08:41
Dziękuję bardzo za pomoc :)
Temat można zamknąć.
P-35126
szyx_yankez
» 2011-07-01 18:14:00
Autor tematu też ma możliwość zamykania.
P-35127
« 1 »
  Strona 1 z 1