Avatar
Z-men
Člen
Avatar
Z-men:

Program mi nelze spustit, a to z důvodu, že proměnné a z case 1 přiřazuje proměnnou a z case 2. Neví někdo co s tím ? Předem děkuji.

Console.WriteLine("Vítejte v kalkulačce na počítání objemů a povrchů těles.");
            Console.WriteLine("Vyberte si z následující nabídky těleso,které chcete spočítat, a poté stiskněte jemu přiřazené číslo.");
            Console.WriteLine("1 - krychle");
            Console.WriteLine("2 - kvádr");
            Console.WriteLine("3 - koule");
            int výběr = int.Parse(Console.ReadLine());
            float objem = 0;
            float povrch = 0;
            switch (výběr)
            {
                case 1:
                    Console.WriteLine("Vybrali jste si krychli, zadejte její stranu a v cm");
                    float a = float.Parse(Console.ReadLine());
                    if (a <= 0)
                        Console.WriteLine("Zadali jste špatnou hodnotu a");
                    else
                    {
                        objem = a * a * a;
                        povrch = 6 * a * a;
                        Console.WriteLine("Objem = {0} cm3, povrch ={1} cm2", objem, povrch);
                    }
                    break;
                case 2:
                    Console.WriteLine("Vybrali jste si kvádr, zadejte jeho stran a,b,c v cm ");
                    float a = float.Parse(Console.ReadLine());
                    float b = float.Parse(Console.ReadLine());
                    float c = float.Parse(Console.ReadLine());
                    if (a <= 0)
                        Console.WriteLine("Zadali jste špatnou hodnotu a");
                    else if (b <= 0)
                        Console.WriteLine("Zadali jste špatnou hodnotu b");
                    else if (c <= 0)
                        Console.WriteLine("Zadali jste špatnou hodnotu c");
                    else
                    {
                        objem = a * b * c;
                        povrch = 2 * (a * b + b * c + c * a);
                        Console.WriteLine("Objem = {0} cm3, povrch = {1} cm2", objem, povrch);

                    }
                    break;
                case 3:
                    Console.WriteLine("Vybrali jste si kouli, zadejte její poloměr r v cm");
                    float r = float.Parse(Console.ReadLine());
                    if (r <= 0)
                        Console.WriteLine("Zadali jste špatnou hodnotu r");
                    else
                    {
                        objem = (4 * 3.14F * r * r * r) / (3);
                        povrch = 4 * 3.14F * r * r;
                        Console.WriteLine("Objem = {0} cm3, povrch ={1} cm2", objem, povrch);
                    }
                    break;
            }
            if ((výběr > 3) || (výběr < 1))
                Console.WriteLine("Neplatná volba");
            Console.ReadKey();
 
Odpovědět 11. dubna 23:45
Avatar
niderle.l
Člen
Avatar
Odpovídá na Z-men
niderle.l:

Ahoj dle kódu to máš celé v jedné metodě a tam není možné, aby jsi měl jednu jednu proměnnou definovanou víckrát jak jednou. Doporučuji Ti buď před celý switch dát jen jednou její definici a nebo asi v případě case 1 ji přepsat na jinou proměnnou, kterou tam nemáš. Udělal bych to stejně jako máš definici objemu a povrchu.

 
Nahoru Odpovědět  +1 12. dubna 4:47
Avatar
LacoS.
Člen
Avatar
LacoS.:

Bud definuj premennu: float a; ... niekde na zaciatku,
alebo to vies obabrat takto:

int i1 = 2;

switch (i1)
{
    case 1:
        {
            float a;
            // blablabla
        }
        break;
    case 2:
        {
            float a;
            // blablabla
        }
        break;
    case 3:
        {
            float a;
            // blablabla
        }
        break;
    default:
        break;
}

... v takomto pripade mozes medzi zatvorkami definovat akekolvek premenne,
ale budu mat 'platnost' iba vo vnutri daneho bloku { ... iba tuto ... }

Mimo daneho bloku uz premenna 'a' nebude existovat.

 
Nahoru Odpovědět 12. dubna 8:45
Avatar
Z-men
Člen
Avatar
Z-men:

Díky za rady! (y)

 
Nahoru Odpovědět 12. dubna 19:13
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 4 zpráv z 4.