Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Pytanie - C++ : po spełnieniu warunku else powrót do określonej funkcji programu.


Rekomendowane odpowiedzi

Opublikowano

Cześć !

Mam pytanie , otóż tworzę kalkulatorek dodający, odejmujący, mnożący oraz dzielący.

Poszczególne funkcje są przyporządkowane do odpowiednio : 1, 2, 3, 4 .

 

Problem mam z tym, że chciałbym żeby po wpisaniu innej liczby (np. 8 ) program cofnął użytkownika do tego menu wyboru.

 

Wykorzystywałem komendy if, oraz else.

 

Tutaj jest kod ( tylko nie śmiejcie sie że taki wielki, dopiero zaczynam xD )

 

#include <iostream>
#include <conio.h>
#include <math.h>
#include <cstdlib>
#include <string>
#include <windows.h>

using namespace std;

int main() {
	
		
		cout << " Kalkulator" << "												Tworca : ****, klasa ****" << endl << endl;

		cout << " Podaj liczbe A : " << endl << endl;
		float Liczba_A;
		cout << " "; 
		cin >> Liczba_A;
			cout << endl << endl;
			
		cout << " Podaj liczbe B : " << endl << endl;
		float Liczba_B;
		cout << " ";
		cin >> Liczba_B;
			cout << endl << endl;

		cout << " Wybierz operacje : 1 - Dodawanie, 2 - Odejmowanie, 3 - Mnozenie, 4 - Dzielenie lub 5 - Wyjscie : " << endl << endl;
		int Operacja;
		cout << " ";
		cin >> Operacja;
			cout << endl << endl;

		if (Operacja==1) {
			cout << " Wynik dodawania : " << Liczba_A + Liczba_B << endl << endl;
		}

		if (Operacja==2) {
			cout << " Wynik odejmowania : " << Liczba_A-Liczba_B << endl << endl;
		}

		if (Operacja==3) {
			cout << " Wynik mnozenia : " << Liczba_A*Liczba_B << endl << endl;
		}

		if (Operacja==4) {
			cout << " Wynik dzielenia : " << Liczba_A/Liczba_B << endl << endl;
		}

		if (Operacja==5) {
			cout << " Wylaczanie programu  " << endl << endl;
				Sleep(1000);
					cout << " 3 " << endl << endl;
						Sleep(1000);
							cout << " 2 " << endl << endl;
								Sleep(1000);
									cout << " 1 " << endl << endl;
										Sleep(500);
											cout << " Zegnaj ! " << endl;
												Sleep(1000);
			exit(0);
		}

		else { 

			cout<< " Brak operacji. " << endl << endl;
}

		cout << " Wpisz haslo zeby wyjsc. UWAGA !! Zle haslo wysadza komputer !!" << endl << endl;
		string haslo;
			cout << " ";
		cin >> haslo;
			cout << endl;
		if (haslo=="troll") {
			cout << " Dobre haslo ! Zegnaj ! " << endl;

				Sleep(1000);
				
			exit(0);
		}

		else {
			cout << " Autodestrukcja rozpoczyna sie... " << endl << endl;
			Sleep(2000);
				cout << " 3 " << endl << endl;
					Sleep(2000);
						cout << " 2 " << endl << endl;
							Sleep(2000);
								cout << " 1 " << endl << endl;
									Sleep(2000);

		cout << " Milego dnia ! " << endl;

									Sleep(1000);
										exit(0);
		}
	}

 

To z hasłem zrobiłem ot, tak dla jaj .

 

Proszę o możliwie szybką pomoc ( oraz brak hejtów :D )

 

Tyle bibliotek jest, bo chciałem mieć pewność, że wszystko zadziała .

Opublikowano

Dzięki za rade.

Próbowałem pokombinować coś ale nie ma rady :/

Pętli jeszcze ani razu nie pisałem więc będzie jakieś nowe wyzwanie ;)

 

Aha i co to formatowanie kodu ?

Opublikowano

funkcja switch bardziej się tu sprawdzi podczas wyboru działania

 

 

 

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

using namespace std;

float a,b,wynik,n;
int i, znak;
char koniec;
long double silnia;

int main()
{
    cout<<"Witaj w moim zaawansowanym kalkulatorze"<<endl;
    cout<<"Kalkulator oblicza te dzialania:";
    do
    {
        cout<<"\n[1]-Suma\n[2]-Odejmowanie\n[3]-Mnozenie\n[4]-Dzielenie\n[5]-Potegowanie\n[6]-Pierwiastkowanie\n[7]-Silnia";
        cout<<"\nTwoj wybor: ";
        cin>>znak;
            if (znak == 1) cout<<"Wybrales dodawanie [ENTER]"<<endl;
            if (znak == 2) cout<<"Wybrales odejmowanie [ENTER]"<<endl;
            if (znak == 3) cout<<"Wybrales mnozenie [ENTER]"<<endl;
            if (znak == 4) cout<<"Wybrales dzielenie [ENTER]"<<endl;
            if (znak == 5) cout<<"Wybrales potegowanie [ENTER]"<<endl;
            if (znak == 6) cout<<"Wybrales pierwiastkowanie [ENTER]"<<endl;
            if (znak == 7) cout<<"Wybrales silnie [ENTER]"<<endl;
            if (znak<1 || znak>7)
            {
                cout<<"Zly numer wyboru.";
            }
        getch();
        switch(znak)
        {
            case 1:
                cout<<"Podaj liczbe a: ";
                cin>>a;
                cout<<"Podaj liczbe b: ";
                cin>>b;
                wynik=a+b;
                cout<<"Wynik dodawania wynosi: "<<wynik;
            break;

            case 2:
                cout<<"Podaj liczbe a: ";
                cin>>a;
                cout<<"Podaj liczbe b: ";
                cin>>b;
                wynik=a-b;
                cout<<"Wynik odejmowania wynosi: "<<wynik;
            break;

            case 3:
                cout<<"Podaj liczbe a: ";
                cin>>a;
                cout<<"Podaj liczbe b: ";
                cin>>b;
                wynik=a*b;
                cout<<"Wynik mnozenia wynosi: "<<wynik;
            break;

            case 4:
                cout<<"Podaj liczbe a: ";
                cin>>a;
                cout<<"Podaj liczbe b: ";
                cin>>b;
                    if (b==0)
                    {
                    cout<<"Nie mozna dzielic przez zero";
                    }
                    else
                    {
                    wynik=a/b;
                    cout<<"Wynik dzielenia wynosi: "<<wynik;
                    }
            break;

            case 5:
                cout<<"Podaj liczbe ktora chcesz spotengowac: ";
                cin>>a;
                cout<<"Podaj potege tej liczby: ";
                cin>>b;
                wynik=1;
                    for(i=1;i<=b;i++)
                    {
                        wynik=wynik*a;
                    }
                cout<<a<<" do potegi "<<b<<" wynosi: "<<wynik;
            break;

            case 6:
                cout<<"Podaj liczbe do spierwiastkowania: ";
                cin>>a;
                wynik=sqrt(a);
                cout<<"Wynik spierwiastkowania liczby "<<a<<" wynosi: "<<wynik;
            break;

            case 7:
                cout<<"Podaj z jakiej liczby chcesz obliczyc silnie: ";
                cin>>n;
                    if (n<0)
                    {
                        return 0;
                    }
                    else
                    {
                        silnia=1;
                        for(i=1;i<=n;i++)
                        {
                            silnia=silnia*i;
                        }
                    cout<<"Wynik silni z liczby "<<n<<" wynosi: "<<silnia;
                    }
            break;
        }

    cout<<"\nCzy chcesz zakonczyc program? [t/n]: ";
    cin>>koniec;

    if (koniec == 'n') cout<<"---------------------------------------------";

    } while(koniec == 'n');

    cout<<"Dziekuje za skorzystanie z programu.";
    getch();
    return 0;
}
 

Masz tu taki mój przykładowy kalkulatorek, może na nim siębazuj?

 

 

Osobiście pomagam tylko na PW lub e-mail


-----------------------------------------------------------------


https://github.com/smietanka

Opublikowano

funkcja switch bardziej się tu sprawdzi podczas wyboru działania

 

 

 

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

using namespace std;

float a,b,wynik,n;
int i, znak;
char koniec;
long double silnia;

int main()
{
    cout<<"Witaj w moim zaawansowanym kalkulatorze"<<endl;
    cout<<"Kalkulator oblicza te dzialania:";
    do
    {
        cout<<"\n[1]-Suma\n[2]-Odejmowanie\n[3]-Mnozenie\n[4]-Dzielenie\n[5]-Potegowanie\n[6]-Pierwiastkowanie\n[7]-Silnia";
        cout<<"\nTwoj wybor: ";
        cin>>znak;
            if (znak == 1) cout<<"Wybrales dodawanie [ENTER]"<<endl;
            if (znak == 2) cout<<"Wybrales odejmowanie [ENTER]"<<endl;
            if (znak == 3) cout<<"Wybrales mnozenie [ENTER]"<<endl;
            if (znak == 4) cout<<"Wybrales dzielenie [ENTER]"<<endl;
            if (znak == 5) cout<<"Wybrales potegowanie [ENTER]"<<endl;
            if (znak == 6) cout<<"Wybrales pierwiastkowanie [ENTER]"<<endl;
            if (znak == 7) cout<<"Wybrales silnie [ENTER]"<<endl;
            if (znak<1 || znak>7)
            {
                cout<<"Zly numer wyboru.";
            }
        getch();
        switch(znak)
        {
            case 1:
                cout<<"Podaj liczbe a: ";
                cin>>a;
                cout<<"Podaj liczbe b: ";
                cin>>b;
                wynik=a+b;
                cout<<"Wynik dodawania wynosi: "<<wynik;
            break;

            case 2:
                cout<<"Podaj liczbe a: ";
                cin>>a;
                cout<<"Podaj liczbe b: ";
                cin>>b;
                wynik=a-b;
                cout<<"Wynik odejmowania wynosi: "<<wynik;
            break;

            case 3:
                cout<<"Podaj liczbe a: ";
                cin>>a;
                cout<<"Podaj liczbe b: ";
                cin>>b;
                wynik=a*b;
                cout<<"Wynik mnozenia wynosi: "<<wynik;
            break;

            case 4:
                cout<<"Podaj liczbe a: ";
                cin>>a;
                cout<<"Podaj liczbe b: ";
                cin>>b;
                    if (b==0)
                    {
                    cout<<"Nie mozna dzielic przez zero";
                    }
                    else
                    {
                    wynik=a/b;
                    cout<<"Wynik dzielenia wynosi: "<<wynik;
                    }
            break;

            case 5:
                cout<<"Podaj liczbe ktora chcesz spotengowac: ";
                cin>>a;
                cout<<"Podaj potege tej liczby: ";
                cin>>b;
                wynik=1;
                    for(i=1;i<=b;i++)
                    {
                        wynik=wynik*a;
                    }
                cout<<a<<" do potegi "<<b<<" wynosi: "<<wynik;
            break;

            case 6:
                cout<<"Podaj liczbe do spierwiastkowania: ";
                cin>>a;
                wynik=sqrt(a);
                cout<<"Wynik spierwiastkowania liczby "<<a<<" wynosi: "<<wynik;
            break;

            case 7:
                cout<<"Podaj z jakiej liczby chcesz obliczyc silnie: ";
                cin>>n;
                    if (n<0)
                    {
                        return 0;
                    }
                    else
                    {
                        silnia=1;
                        for(i=1;i<=n;i++)
                        {
                            silnia=silnia*i;
                        }
                    cout<<"Wynik silni z liczby "<<n<<" wynosi: "<<silnia;
                    }
            break;
        }

    cout<<"\nCzy chcesz zakonczyc program? [t/n]: ";
    cin>>koniec;

    if (koniec == 'n') cout<<"---------------------------------------------";

    } while(koniec == 'n');

    cout<<"Dziekuje za skorzystanie z programu.";
    getch();
    return 0;
}
 

Masz tu taki mój przykładowy kalkulatorek, może na nim siębazuj?

 

 

 

 

Pisze o tym, że funkcja switch bardziej się przyda, a i tak korzysta z if, których tam nie powinno być ;]. Mówiąc szczerze, nie bazuj na tym kalkulatorze.

 

Po co te wszystkie exity? Nie rozumiem. Są całkowicie zbędne. Ten sleep chyba tylko dla fajnego efektu :).

 

Po prostu zamknij cały kod (albo prawie cały kod) z maina do pętli z odpowiednim warunkiem :).


Pomagam w projektach dotyczących programowania (C++/C/Java/C#/inne). Jak masz jakiś problem, napisz do mnie, wspólnie poszukamy rozwiązania ;).

Opublikowano

Zrobiłem do...while ustawiony tak zeby po wpisaniu w menu liczby wyzszej niż 5 wyświetlał menu tak długo, aż użytkownik poda liczbę <= 5 :) I tu kolejny kłopot : kompilator ( Visual C++ 2010 Express ) twierdzi że brakuje '{'

 

else { 

			cout<< " Brak operacji. " << endl << endl;

				Sleep(5000);

				if (Operacja>5) {
				do 

				{
					 
						cout << " Wybierz operacje : 1 - Dodawanie, 2 - Odejmowanie, 3 - Mnozenie, 4 - Dzielenie lub 5 - Wyjscie : " << endl << endl;
		int Operacja;
		cout << " ";
		cin >> Operacja;
			cout << endl << endl;

		if (Operacja==1) {
			cout << " Wynik dodawania : " << Liczba_A + Liczba_B << endl << endl;
		}

		if (Operacja==2) {
			cout << " Wynik odejmowania : " << Liczba_A-Liczba_B << endl << endl;
		}

		if (Operacja==3) {
			cout << " Wynik mnozenia : " << Liczba_A*Liczba_B << endl << endl;
		}

		if (Operacja==4) {
			cout << " Wynik dzielenia : " << Liczba_A/Liczba_B << endl << endl;
		}

		if (Operacja==5) {
			cout << " Wylaczanie programu  " << endl << endl;
				Sleep(1000);
					cout << " 3 " << endl << endl;
						Sleep(1000);
							cout << " 2 " << endl << endl;
								Sleep(1000);
									cout << " 1 " << endl << endl;
										Sleep(500);
											cout << " Zegnaj ! " << endl;
												Sleep(1000);
			exit(0);
		} 

				}

 

coś takiego : fatal error C1075: end of file found before the left brace '{'

 

Co z tym zrobić ?

 

Opublikowano

Żeby wrócić do menu wyboru napisz program w funkcjach. Na przykład coś takiego:

else
{
    Menu();
}

Ja przynajmniej bym tak zrobił.

Opublikowano

kurwa, po co wracac, zrobic petle, wpiszesz 1 dodawanie, 2 odejmowanie, etc, 0 wyjscie, jesli wieksze od np 6 lub mniejsze od 0 to wroc do poczatku petli, zrobic wszystko na do while, takie to trudne?

 

int main()
{
short menu;
do{
cin>>menu;
switch(menu)
 {
 }
}while(menu!=0)

}

 

 

najlepiej to zrobic na funkcjach, bedzie przejrzysciej, niz milion linijnek w switchu.

Opublikowano

To właśnie jest ułatwienie..

 

Równie dobrze mógłbym powiedzieć że nie powinno się używać obiektowości bo wprowadza niepotrzebne utrudnienia,

Pisze boty do gier WWW na zlecenie.

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...