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, botów: 0