Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Z-men
Člen
Avatar
Z-men:11.4.2016 23:45

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.4.2016 23:45
Avatar
Odpovídá na Z-men
Ladislav Niderle:12.4.2016 4:47

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
12.4.2016 4:47
Avatar
LacoS.
Člen
Avatar
LacoS.:12.4.2016 8:45

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.4.2016 8:45
Avatar
Z-men
Člen
Avatar
Z-men:12.4.2016 19:13

Díky za rady! (y)

 
Nahoru Odpovědět
12.4.2016 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.