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

Pętla do...while

Ostatnio zmodyfikowano 2016-11-15 21:23
Autor Wiadomość
Mateusz0230
Temat założony przez niniejszego użytkownika
Pętla do...while
» 2016-11-15 17:04:20
Witajcie po raz kolejny!
Kolejny dzień, kolejna lekcja do przodu, dzisiaj przerabiałem lekcje o pętli do...while. Zadanie do tematu było następujące:
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.

Kod, który do owego zadania napisałem:
C/C++
#include <iostream>
int main()
{
    int liczba;
    int a;
    int b;
    char rodzaj;
   
    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 >> liczba;
           
            switch( liczba )
            {
               
               
            case 1:
                std::cout << "Podaj liczbe pierwsza" << std::endl;
                std::cin >> a;
                std::cout << "Podaj liczbe druga" << std::endl;
                std::cin >> b;
                std::cout << "Wynik z dodawania: " << a + b << std::endl;
                break;
               
            case 2:
                std::cout << "Podaj liczbe pierwsza" << std::endl;
                std::cin >> a;
                std::cout << "Podaj liczbe druga" << std::endl;
                std::cin >> b;
                std::cout << "Wynik z odejmowania: " << a - b << std::endl;
                break;
               
            case 3:
                std::cout << "Podaj liczbe pierwsza" << std::endl;
                std::cin >> a;
                std::cout << "Podaj liczbe druga" << std::endl;
                std::cin >> b;
                std::cout << "Wynik z mnozenia: " << a * b << std::endl;
                break;
               
            case 4:
                std::cout << "Podaj liczbe pierwsza" << std::endl;
                std::cin >> a;
                std::cout << "Podaj liczbe druga" << std::endl;
                std::cin >> b;
                std::cout << "Wynik z dzielenia: " << a / b << std::endl;
                break;
               
            case 5:
                std::cout << "Zapraszamy ponownie kiedy indziej!" << std::endl;
                break;
               
            }
           
        }
       
    } while( liczba != 5 );
   
    std::cout << "Do widzenia!" << std::endl;
    return 0;
}

Mam jeden problem, mianowicie, że nie wiem jak zrobić żeby podawać na poczatku liczby, potem rodzaj działania i podanie wyniku.
Z góry dziękuję jeśli ktoś znajdzie chwilkę czasu i mi pomoże.
P-153745
michal11
» 2016-11-15 18:39:17
Chodzi ci o to, żebyś nie musiał wybierać z menu jakie działanie chcesz policzyć tylko chcesz wpisywać
2 + 3
 i od razu otrzymywać wynik ?
P-153748
MrNobody
» 2016-11-15 18:40:55
Witaj. Tak pobieżnie...

C/C++
#include <iostream>
int main()
{
    int liczba;
    int a;
    int b;
    char rodzaj;
   
   
   
    do
    {
       
        std::cout << "Podaj liczbe pierwsza: ";
        std::cin >> a;
        std::cout << std::endl << "Podaj liczbe druga: ";
        std::cin >> b;
        std::cout << std::endl;
       
        {
            std::cout << "Jaka operacje chcesz wykonac?" << std::endl;
            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 >> liczba;
           
            switch( liczba )
            {
               
               
            case 1:
                std::cout << "Wynik z dodawania: " << a + b << std::endl;
                break;
               
            case 2:
               
                std::cout << "Wynik z odejmowania: " << a - b << std::endl;
                break;
               
            case 3:
               
                std::cout << "Wynik z mnozenia: " << a * b << std::endl;
                break;
               
            case 4:
               
                std::cout << "Wynik z dzielenia: " << a / b << std::endl;
                break;
               
            case 5:
                std::cout << "Zapraszamy ponownie kiedy indziej!" << std::endl;
                break;
               
            }
           
        }
       
    } while( liczba != 5 );
   
    std::cout << "Do widzenia!" << std::endl;
    return 0;
}

... oraz dodaj po bibliotekach:

C/C++
using namespace std;

Będziesz mógł zrezygnować z pisania za każdym razem "std::".
P-153749
michal11
» 2016-11-15 19:01:49
... oraz dodaj po bibliotekach:

C/C++
using namespace std;

Będziesz mógł zrezygnować z pisania za każdym razem "std::".

To jest akurat zły pomysł, utrwalający potencjalnie szkodliwy nawyk, już lepiej dodać na początku main
C/C++
using std::cout;
using std::endl;
using std::cin;
P-153750
MrNobody
» 2016-11-15 19:24:32
Ilu "typów", tyle opinii ;]. Jedni lubią, inni nienawidzą. Oczywiście masz rację! ale... Mateusz! pisz z "std::", bez "std::" tylko dla siebie, nie biblioteki i większe projekty!
PS. Chodziło mi tu bardziej o wygodę w pisaniu kodu typu "Hello Word!"
P-153751
michal11
» 2016-11-15 19:30:51
Właśnie na pisaniu kodu typu "Hello Word!" człowiek się uczy, i jeżeli się nauczyć dawać po includach
using namespace std;
 to później będzie tak pisał wszędzie, między innymi w plikach nagłówkowych i skoro pisał tak dla std to pomyśli, że można tak pisać dla każdego namespace'a i się robią problemy. Moim zdaniem kod który napisał @Mateusz0230 jest pod tym względem bardzo dobry, spodobało mi się to jak go pierwszy raz przeczytałem, jedyni jeżeli chce sobie ułatwić pisanie to może skorzystać z tego co napisałem wcześniej tzn. using na konkretnych klasach z std lub może napisac sobie funkcję do wypisywania i wczytywania z cout i cin ( co jest w gruncie rzeczy nie najgorszym pomysłem).
P-153752
MrNobody
» 2016-11-15 19:42:06
michal11

Zgadzam się z Tobą w 100%, co już napisałem (po prostu nie pomyślałem :]) . Dla Mateusza jednak, ważniejsze jest, zrozumienie zagadnienia. Dla niego na razie program ma działać. Jeśli zadziała, w tedy może pomyśleć, co mógłby zrobić lepiej. Tak na marginesie, ciekaw jestem ile razy nie używałeś "using namespace std;", na początku nauki ;]
P-153753
michal11
» 2016-11-15 19:51:33
Ja właśnie niestety zbyt często używałem i strasznie żałuję, że nie miałem nikogo kto by mi powiedział żeby tego nie robić/robić to inaczej.
P-153754
« 1 » 2
  Strona 1 z 2 Następna strona