Funkcja warunkowa if czy while

0

Witam serdecznie jestem nowy na forum i uczę się programowania od dość krótko programowania w C++ na razie podstawy ale od czegoś trzeba zacząć napisałem pewien kod z zastosowaniem funkcji switch jednakże, chciałbym aby program dawał możliwość wyboru co ma się stać, gdy skończy swoje zadanie, tzn. czy ma się zamknąć czy ma zacząć od nowa

#include <iostream>
#include <math.h>

int main ()

{
    long int  a,b;
    int x;

    std::cout << "Podaj pierwsza liczbe:" << std::endl;
    std::cin >> a;
    std::cout << "Podaj drugą liczbe:" << std::endl;
    std::cin >> b;
    std::cout << "Wybierz dzialanie, ktore chcesz wykonac na tych liczbach kolejno dla" << std::endl;
    std::cout << "1: Dodawanie \n" << std::endl;
    std::cout << "2: Odejmowanie \n" << std::endl;
    std::cout << "3: Mnozenie \n" <<std::endl;
    std::cout << "4: Dzielenie \n" <<std::endl;
    std::cout << "5: Pierwiastkowanie 1liczba^2liczba \n" <<std::endl;
    std::cout << "6: Pierwiastkowanie 2liczba^1liczba" <<std::endl;
    std::cin >> x;

    switch(x)
{
    case 1:
           std::cout << "Wynik dodawania: \n" << a+b << std::endl;
           break;
    case 2:
            std::cout << "Wynik odejmowania: \n" << a-b << std::endl;
            break;
    case 3:
            std::cout << "Wynik mnozenia: \n" << a*b << std::endl;
            break;
    case 4:
            std::cout << "Wynik dzielenia: \n " << a/b << std::endl;
            break;
    case 5:
            std::cout << "Wynik potegowania 1liczba^2liczba: \n " << pow(a,b) << std::endl;
            break;
    case 6:
            std::cout << "Wynik potegowania 2liczba^1liczba: \n " << pow(b,a) << std::endl;
            break;
    default:
            std::cout << "Nie podales dzialania \n" << std::endl;
            break;
}
   // std::cout << "\n Dziekuje za skorzystanie z kalkulatora" << std::endl;
        //std::cout << "\n Chcesz zacząc od nowa ? T/N" << std::endl;
   //std::cin >> "\n Decyzja:";
}

Próbowałem coś kombinować z funkcją while oraz if ale żadne z nich poza licznymi błędami nie dało rezultatu poza licznymi błędami (pozostałość zapytania końcowego jest w komentarzu :)

0

Witaj wśród programistów ;)
Poczytaj o pętli do...while z jej pomocą uzyskasz zamierzony efekt.

0

Hmm widziałem to na innym przykładzie :)
U mnie to wygląda później tak

#include <iostream>
#include <math.h>

int main ()
do {
     std::cout << "\n Dziekuje za skorzystanie z kalkulatora" << std::endl;
     std::cout << "\n Chcesz zacząc od nowa ? T/N" << std::endl;
     std::cin >> "\n Decyzja:";
     while ();
cin.get (T or N);

//dalej ta sama funkcja co post wyżej (switch)
}
}
return 0
}

I się zastanawiam się co jest nie tak :/
Niby get powinien zadziałać ale może wstawić while na końcu hmm

0

Spróbuj wykorzystać zwykłą pętlę while(warunek). Wystarczy, że wykorzystasz zmienną zawierającą dany znak decydujący o dalszym wykonywaniu programu. Zainicjuj zmienną tak, jakby użytkownik zgodził się na wykonywanie programu, a na koniec pętli (jako ostatnia z instrukcji) spytaj użytkownika tak jak to zrobiłeś co chce zrobić z programem. Wtedy warunkiem umieszczonym w nawiasach while() będzie porównanie zmiennej przechowującej znak decyzji ('T'/'N') ze znakiem zgody.
Powodzenia ;)

0
#include <iostream>
#include <cmath.h> 

int main ()
{
    long int a,b;
    int x;
        bool koniec= false;
        do {

    std::cout << "Podaj liczbe A \n" << std::endl;
    std::cin >> a;
    std::cout << "Podaj liczbe B \n" << std::endl;
    std::cin >> b;
    std::cout << "Wybierz działanie \n" << std::endl;
    std::cout << "1: Dodawanie \n" << std::endl;
    std::cout << "2: Odejowanie \n" << std::endl;
    std::cout << "3: Mnozenie \n" << std::endl;
    std::cout << "4: Dzielenie \n" << std::endl;
    std::cout << "5: Potęgowanie \n" << std::endl;
    std::cout << "6: Koniec \n" << std::endl;
    std::cin >> x;
        if (x>= 1 && x<=6 )
                switch (x)
                {
                            case 1:
            std::cout << "Wynik dodawania: \n" << a+b << std::endl;
            break;
                            case 2:
            std::cout << "Wynik odejmowania: \n" << a-b << std::endl;
            break;                                      
                            case 3:
            std::cout << "Wynik mnozenia: \n" << a*b << std::endl;
            break;
                            case 4:
           if (b !=0)
            std::cout << "Wynik dzielenia: \n " << a/b << std::endl;
            else
            std::cout << "Nie dzielimy przez zero \n" << std::endl;
            break;
                            case 5:
            std::cout << "Wynik potęgowania: \n" << a ^ b std::end;
            break;              
                            case 6:
            koniec = true;
            break;  

                }
        else
        std::cout << "Wybrana zla opcja" << std::endl;

}
while (x != 6 && !koniec);
std::cout << "Do zobaczenia \n" <<std::endl;
system ( "pause" );
return 0;
}

Zrobiłem coś takiego działało wszystko ładnie do czasu, potęgowania (zmiana inlude math na cmath

0

nie

 #include <cmath.h> 

a

 #include <cmath> 

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0