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