Program MENU nie działa

0

Witam. Nie wiem dlaczego to nie chce działać.

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

using namespace std;

int main()
{
	const float pi = 3.1415;
	cout << "MENU" << endl;
	cout << "[1] - pole boczne graniastolupa" << endl;
	cout << "[2] - objetosc graniastoslupa" << endl;
	cout << "[3] - pole boczne kuli" << endl;
	cout << "[4] - objetosc kuli" << endl;

	int znak;
	cin >> znak;
	switch (znak)
	{
	case 1:
		//pole boczne prostopadloscianu
		int a1, b1, h1;
		cout << "Podaj pierwszy bok: ";
		cin >> a1;
		cout << "Podaj drugi bok: ";
		cin >> b1;
		cout << "Podaj wysokosc: ";
		cin >> h1;
		if (a1 > 0 && b1 > 0 && h1 > 0)
		{
			int poleBoczneG = ((a1 * h1) * 2) + ((b1 * h1) * 2);
			cout << "Pole boczne graniastoslupa wynosi: " << poleBoczneG << endl;
		}
		else
		{
			cout << "Wartosci nie moga byc ujemne!" << endl;
		}
	break;
	case 2:
		//objetosc graniastolupa
		int a1, b1, h1;
		cout << "Podaj pierwszy bok: ";
		cin >> a1;
		cout << "Podaj drugi bok: ";
		cin >> b1;
		cout << "Podaj wysokosc: ";
		cin >> h1;
		if (a1 > 0 && b1 > 0 && h1 > 0)
		{
			int objetoscG = a1 * b1 * h1;
			cout << "Objetosc graniastolupa wynosi: " << objetoscG << endl;
		}
		else
		{
			cout << "Wartosci nie moga byc ujemne!" << endl;
		}
	break;
	case 3:
		//pole boczne kuli
		float r1;
		cout << "Podaj promien: ";
		cin >> r1;
		if (r1 > 0)
		{
			float poleBoczneK = 4 * pi * pow(r1, 2);
			cout << "Pole boczne kuli wynosi: " << poleBoczneK << endl;
		}
		else
		{
			cout << "Wartosci nie moga byc ujemne!" << endl;
		}
	break;
	case 4:
		//objetosc kuli
		float r1;
		cout << "Podaj promien: ";
		cin >> r1;
		if (r1 > 0)
		{
			float objetoscK = (4 / 3) * pi * pow(r1, 3);
			cout << "Objetosc kuli wynosi: " << objetoscK << endl;
		}
		else
		{
			cout << "Wartosci nie moja byc ujemne!" << endl;
		}
	break;
	default:
		cout << "Nie ma takiej opcji!" << endl;
	break;
	}


	system("PAUSE");
}


0

https://wandbox.org/permlink/J6vDLQRzrzUz3nsf
Kompilator wyraźnie mówi, że w jednym zakresie definiujesz symbole o tej samej nazwie.

prog.cc:40:13: error: redefinition of 'a1'
        int a1, b1, h1;
            ^
prog.cc:21:13: note: previous definition is here
        int a1, b1, h1;
            ^

Najprościej stworzyć nowy zakres widoczności zmiennej przez utworzenie mniejszych funkcji.

0

case to tylko labelka widziana przez kompilator, coś jak labelka do skoku dla goto. Wszystkie zmienne zdefiniowane w nich należą do wspólnej przestrzeni. Zdefiniuj zmienne przed switch albo dodaj{ } do case'ów. Przkładowa, działająca wersa:

switch (znak)
    {
    case 1:
    {
        //pole boczne prostopadloscianu
        int a1, b1, h1;
        cout << "Podaj pierwszy bok: ";
        cin >> a1;
        cout << "Podaj drugi bok: ";
        cin >> b1;
        cout << "Podaj wysokosc: ";
        cin >> h1;
        if (a1 > 0 && b1 > 0 && h1 > 0)
        {
            int poleBoczneG = ((a1 * h1) * 2) + ((b1 * h1) * 2);
            cout << "Pole boczne graniastoslupa wynosi: " << poleBoczneG << endl;
        }
        else
        {
            cout << "Wartosci nie moga byc ujemne!" << endl;
        }
    break;
    }
    case 2:
    {
        //objetosc graniastolupa
        int a1, b1, h1;
        cout << "Podaj pierwszy bok: ";
        cin >> a1;
        cout << "Podaj drugi bok: ";
        cin >> b1;
        cout << "Podaj wysokosc: ";
        cin >> h1;
        if (a1 > 0 && b1 > 0 && h1 > 0)
        {
            int objetoscG = a1 * b1 * h1;
            cout << "Objetosc graniastolupa wynosi: " << objetoscG << endl;
        }
        else
        {
            cout << "Wartosci nie moga byc ujemne!" << endl;
        }
    break;
    }
    case 3:
    {
        //pole boczne kuli
        float r1;
        cout << "Podaj promien: ";
        cin >> r1;
        if (r1 > 0)
        {
            float poleBoczneK = 4 * pi * pow(r1, 2);
            cout << "Pole boczne kuli wynosi: " << poleBoczneK << endl;
        }
        else
        {
            cout << "Wartosci nie moga byc ujemne!" << endl;
        }
    break;
    }
    case 4:
    {
        //objetosc kuli
        float r1;
        cout << "Podaj promien: ";
        cin >> r1;
        if (r1 > 0)
        {
            float objetoscK = (4 / 3) * pi * pow(r1, 3);
            cout << "Objetosc kuli wynosi: " << objetoscK << endl;
        }
        else
        {
            cout << "Wartosci nie moja byc ujemne!" << endl;
        }
    break;
    }
    default:
        cout << "Nie ma takiej opcji!" << endl;
    break;
    }
0

Taki prosty błąd eh
Dzięki za wytłumaczenie i szybką odpowiedź. :)

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