Problem z switch, case;

0
// ConsoleApplication3.cpp: Określa punkt wejścia dla aplikacji konsoli.
//

#include "stdafx.h"
#include <iostream>
#include <Windows.h>
#include <cstdlib>
#include <time.h>
#include <conio.h>
#include <math.h>


using namespace std;

int main()
{
	cout << "Kalkulator, wersja [4].[2] v[3]" << endl;
	cout << "Wcisnij klawisz zeby przejsc dalej! ";

	getch();
	system("cls");

	int menu, silna;


	cout << "Menu wyboru: " << endl;
	cout << "[1.] Silna !a " << endl;
	cout << "[2.] Potegowanie" << endl;
	cout << "[3.] Wartosc bezwzgledna |x|" << endl;
	cout << "[4.] Rownanie liniowe" << endl;
	cout << "[5.] Rownanie kwadratowe" << endl;
	cout << "[6.] Pola: " << endl;

	cout << "Wybierz: ";
	cin >> menu;

	switch (menu)
	{
	case '1':

		int s;
		long long silnia = 1;
		cout << "Podaj liczbe: ";
		cin >> s;

		for (int i = 1; i <= s; i++) {
			silnia *= i;
		}

		cout << "Silna z " << s << " to " << silnia << endl;
		
		break;
		
	
	case '2':

		int a, b;

		cout << "Wpisz liczbe: ";
		cin >> a;

		cout << "Wpisz wykladnik: ";
		cin >> b;

		cout << pow(a, b) << endl;
		break;
	}

	system("PAUSE");
	return EXIT_SUCCESS;
}

Inicjalizacja "silna" jest pomijana przy etykiecie "case". Wiersz: 55

Korzystam z Visual Studio 2017

0

Pamiętam też miałem ten problem kiedyś ale nie pamiętam dlaczego tak jest. Za to znam rozwiązanie, napisz sobie funkcje do tych obliczeń (w nich pobieraj liczby od użytkownika) i dokonuj w nich obliczeń i zwracaj z nich wynik. Wydaje mi się że powinno zadziałać, chodzi mi o coś takiego:

int dodawanie(){
int a,b;
std::cout<<"Podaj liczby\n";
std::cin>>a>>b;
return (a+b);

int main(){
short k;
k=1;
switch(k){
case 1:
std::cout<<dodawanie();
break;
}
3

Jeżeli chcesz deklarować zmienne w switchu, to użyj { }

A najlepiej nie używaj switcha.

0

Zrobiłbym if'ami ale niestety nie ma opcji powrotu do menu :(

0

Huh? U ciebie jest tak;

    int menu

    cin >> menu;

    switch (menu)

    case '1':

Różne typy danych :P

Sprawdź tak:

    switch (menu)
    {
        case 1:
        {
            int s;
            long long silnia = 1;
            cout << "Podaj liczbe: ";
            cin >> s;
    
            for (int i = 1; i <= s; i++) 
            {
                silnia *= i;
            }
    
            cout << "Silna z " << s << " to " << silnia << endl;
            break;
       }
        case 2:
        {
            int a, b;
            
            cout << "Wpisz liczbe: ";
            cin >> a;
            
            cout << "Wpisz wykladnik: ";
            cin >> b;
            
            cout << pow(a, b) << endl;
            break;
        }
    }
0
// ConsoleApplication3.cpp: Określa punkt wejścia dla aplikacji konsoli.
//

#include "stdafx.h"
#include <iostream>
#include <Windows.h>
#include <cstdlib>
#include <time.h>
#include <conio.h>
#include <math.h>


using namespace std;


int main()
{
	cout << "Kalkulator, wersja [4].[2] v[3]" << endl;
	cout << "Wcisnij klawisz zeby przejsc dalej! ";

	getch();
	system("cls");

	int menu, silna, y;


	cout << "Menu wyboru: " << endl;
	cout << "[1.] Silna !a " << endl;
	cout << "[2.] Potegowanie" << endl;
	cout << "[3.] Wartosc bezwzgledna |x|" << endl;
	cout << "[4.] Rownanie liniowe" << endl;
	cout << "[5.] Rownanie kwadratowe" << endl;
	cout << "[6.] Pola: " << endl;

	cout << "Wybierz: ";
	cin >> menu;
	
	system("cls");

		switch (menu)
		{
		case 1:
		{
			int s;
			long long silnia = 1;
			cout << "Wybrano opcje: Silna !a" << endl;
			cout << "Podaj liczbe: ";
			cin >> s;

			for (int i = 1; i <= s; i++)
			{
				silnia *= i;
			}

			cout << "Silna z " << s << " to " << silnia << endl;

			break;
		}
		case 2:
		{
			int a, b;

			cout << "Wybrano opcje: Potegowanie" << endl;

			cout << "Wpisz liczbe: ";
			cin >> a;

			cout << "Wpisz wykladnik: ";
			cin >> b;

			cout << "Wynik to " << pow(a, b) << endl;
			break;
		}
		case 3:
		{
			int a, x;

			cout << "Wybrano opcje: Wartosc bezgwzgledna |x|" << endl;
			cout << "Podaj liczbe: ";
			cin >> a;

			x = a * (-1);

			cout << "Wartosc bezwzgledna z |" << a << "| to " << x << endl;
			break;
		}
		case 4:
		{
			double a, b, x;

			cout << "Wybrano opcje: Rownanie liniowe" << endl;
			cout << "Podaj a: ";
			cin >> a;
			cout << "Podaj b: ";
			cin >> b;

			if (a == 0 && b == 0) { cout << "Nieskonczenie wiele rozwiazan" << endl; }
			if (a == 0 && b != 0) { cout << "Brak rozwiazan!" << endl; }
			else
			{
				x = -b / a;
				cout << "Wynik rownania liniowego to: " << x << endl;
			}
			break;
		}
		case 5:
		{
			int a, b, c, x, delta;

			cout << "Wybrano opcje: Rownanie kwadratowe" << endl;
			cout << "Podaj a: ";
			cin >> a;
			cout << "Podaj b: ";
			cin >> b;
			cout << "Podaj c: ";
			cin >> c;

			delta = (b*b) - 4 * a * c;
			cout << "Delta wynosi " << delta << endl;

			if (delta < 0) { cout << "Brak rozwiazania, delta jest ujemna!" << endl; }
			if (delta == 0) { int x1;  x1 = (-b) / 2 * a; cout << "Wynik wynosi x1= " << x1 << endl; }
			if (delta > 0)
			{
				int x1, x2;

				x1 = ((-b) - sqrt(delta)) / 2 * a;
				x2 = ((-b) + sqrt(delta)) / 2 * a;

				cout << "Wynik wynosi: " << endl;
				cout << "x1 = " << x1 << endl;
				cout << "x2 = " << x2 << endl;


			}
			break;
		}
		case 6:
		{
			int wybor;

			cout << "Jakie pole chcesz obliczyc?" << endl;

			cout << "[1.] Pole kwadratu" << endl;
			cout << "[2.] Pole prostokatu" << endl;
			cout << "[3.] Pole trojkata" << endl;
			cout << "[4.] Pole kola" << endl;
			cout << "Wybierz: ";
			cin >> wybor;
			system("cls");

			switch (wybor)
			{
			case 1:
			{
				int a, x;

				cout << "Wybrales opcje: Wylicz pole kwadratu" << endl;

				cout << "Podaj bok: ";
				cin >> a;

				x = a * a;

				cout << "Pole kwadratu wynosi " << x << endl;
				break;
			}
			case 2:
			{
				int a, b, x;

				cout << "Wybrales opcje: Wylicz pole prostokata" << endl;

				cout << "Podaj bok a: ";
				cin >> a;

				cout << "Podaj bok b: ";
				cin >> b;

				x = a * b;

				cout << "Pole prostokata wynosi " << x << endl;
				break;
			}
			case 3:
			{
				int a, h, x;

				cout << "Wybrales opcje: Wylicz pole trojkata" << endl;

				cout << "Podaj bok a: ";
				cin >> a;

				cout << "Podaj bok h: ";
				cin >> h;

				x = (a*h) / 2;

				cout << "Pole trojkata wynosi " << x << endl;
				break;
			}
			case 4:
			{
				int r, pi, x;

				pi = 3.14;

				cout << "Wybrales opcje: Wylicz pole kola" << endl;

				cout << "Podaj promien kola: ";
				cin >> r;

				x = pi * (r*r);

				cout << "Pole kola wynosi " << x << endl;
				break;
			}
			}

		}
		default:
		{
			cout << "Konsola zostanie zamknieta za 2 sekundy!" << endl;

			Sleep(2000);
			return 0;
			break;
		}
		}
	system("PAUSE");
	return EXIT_SUCCESS;
}

Jest opcja aby można było się cofać? Np. Wybieram obliczanie polu kwadratu, wykonuje działanie a później wracam do menu? Pętla do, while?

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