NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!
Avatar
Marek Lolek
Člen
Avatar
Marek Lolek:17.11.2017 22:50

Zdravím, našel by se zde někdo, kdo by mi věděl poradit? Začal jsem s c# teprve nedávno.
Mám odprogramováno možná tak 4-5 hodin.
Chtěl jsem si udělat mocninátor a kalkulačku v jednom. Ze začátku se program zeptá, jestli si chci zvolit mocninátor nebo kalkulačku. Když dám mocninátor, tak se to zeptá na číslo a to umocní. Poté se program zeptá, jestli chci spustit aplikaci znovu. Když napíšu ano, tak se spustí kalkulačka, když ne tak to samé. A to samé i u kalkulačky.
Snažím se do toho dát co nejvíce času, co můžu, ale s tímhle si nevím rady. Zkusil jsem toho už hodně a pokaždé se to zlepší, ale pořád to nefunguje tak jak má.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace WhatAnApp
{
    class Program
    {
        static void Main(string[] args)


        {

            bool kalkulacka = true;
            bool mocninator = false;
            bool pokracovat = true;
            while (pokracovat == true)
            {
                Console.WriteLine("Vítejte v mé aplikaci, pro začátek si vyber, jestli chceš spustit kalkulačku nebo mocninátor.");
                Console.WriteLine("1 - mocninátor");
                Console.WriteLine("2 - kalkulačka");
                int volba1 = int.Parse(Console.ReadLine());
                switch (volba1)
                {
                    case 1:
                        mocninator = true;
                        break;
                    case 2:
                        kalkulacka = true;
                        break;
                    default:
                        Console.WriteLine("Zadal jste špatnout hodnotu!");
                        break;
                }

                if (mocninator)
                {
                    Console.WriteLine("Vybrál sis mocninátor");
                    Console.WriteLine("Zadejte číslo, které chcete umocnit");
                    float s = float.Parse(Console.ReadLine());
                    double d = s;
                    double m = 2;
                    Console.WriteLine("Výsledek je: " + Math.Pow(s, m));
                    Console.WriteLine("Přeješ si aplikaci spustit znovu? ano/ne");
                    Console.ReadKey();

                }



                switch (Console.ReadLine())
                {
                    case "ano":
                        pokracovat = true;
                        break;
                    case "ne":
                        Environment.Exit(0);
                        break;
                }

                while (kalkulacka == true)
                {
                    Console.WriteLine("Pro začátek musíš zadat dvě čísla, se kterými budeš pracovat");
                    Console.WriteLine("Zadej první číslo: ");
                    float a;
                    while (!float.TryParse(Console.ReadLine(), out a))
                        Console.WriteLine("Zadal jste neplatné číslo");
                    Console.WriteLine("Zadej druhé číslo: ");
                    float b;
                    while (!float.TryParse(Console.ReadLine(), out b))
                        Console.WriteLine("Zadal jste neplatné číslo");
                    Console.WriteLine("Výborně, teď si vyber operaci: ");
                    Console.WriteLine("1 - sčítání");
                    Console.WriteLine("2 - odčítání");
                    Console.WriteLine("3 - násobení");
                    Console.WriteLine("4 - dělení");
                    char volba = Console.ReadKey().KeyChar;
                    Console.ReadKey();
                    Console.WriteLine("Zvolil jste volbu číslo: " + volba);
                    float vysledek = 0;
                    bool platnaVolba = true;
                    switch (volba)
                    {
                        case '1':
                            vysledek = a + b;
                            break;
                        case '2':
                            vysledek = a - b;
                            break;
                        case '3':
                            vysledek = a * b;
                            break;
                        case '4':
                            vysledek = a / b;
                            break;
                        default:
                            platnaVolba = false;
                            break;
                    }
                    if (platnaVolba)
                        Console.WriteLine("Výsledek: {0}", vysledek);
                    else
                        Console.WriteLine("Neplatná volba operace");
                    Console.WriteLine("Přejete si kalkulačku použít znovu? ano/ne");

                    platnaVolba = false;
                    while (!platnaVolba)
                    {
                        switch (Console.ReadLine().ToString().ToLower())
                        {
                            case "ano":
                                platnaVolba = true;
                                pokracovat = true;
                                break;
                            case "ne":
                                platnaVolba = true;
                                pokracovat = false;
                                break;
                            default:
                                Console.WriteLine("Neplatná volba. Zadejte ano/ne !");
                                break;
                        }


                    }

                    if (pokracovat)
                        Console.Clear();
                }
            }
            Console.ReadKey();
        }

        }
    }
 
Odpovědět
17.11.2017 22:50
Avatar
Jan Blažek
Tvůrce
Avatar
Jan Blažek:17.11.2017 22:58

Ahoj, takové ty konzolove aplikace jsem dlouho nedělal, takže mojí odpověď ber s rezervou :) dle mého nazoru nemáš mít Console.ReadKey() za položením té otázky. Tato funkce ti takhle zahodí první písmeno. Schválně si zkus něči takového.

string opakovat = Console.ReadLine();
switch (opakovat)
                {
                    case "ano":
                        pokracovat = true;
                        break;
                    case "ne":
                        Environment.Exit(0);
                        break;
default:
Console.WriteLine(opakovat);
                }

Tím uvidíš, co se v té proměnné nachází.
Momentálně ti to neskáče ani do jednoho casu.

 
Nahoru Odpovědět
17.11.2017 22:58
Avatar
Marek Lolek
Člen
Avatar
Marek Lolek:18.11.2017 9:22

Teď mi to nefunguje vůbec. Prý byl očekáván znak }. Netuším kde, protože všude kde by měl být, tak tam je.

namespace WhatAnApp
{
    class Program
    {
        static void Main(string[] args)


        {

            bool kalkulacka = false;
            bool mocninator = false;
            bool pokracovat = true;
            while (pokracovat == true)
            {
                Console.WriteLine("Vítejte v mé aplikaci, pro začátek si vyber, jestli chceš spustit kalkulačku nebo mocninátor.");
                Console.WriteLine("1 - mocninátor");
                Console.WriteLine("2 - kalkulačka");
                int volba1 = int.Parse(Console.ReadLine());
                switch (volba1)
                {
                    case 1:
                        mocninator = true;
                        break;
                    case 2:
                        kalkulacka = true;
                        break;
                    default:
                        Console.WriteLine("Zadal jste špatnout hodnotu!");
                        break;
                }

                while (mocninator)
                {
                    Console.WriteLine("Vybrál sis mocninátor");
                    Console.WriteLine("Zadejte číslo, které chcete umocnit");
                    float s = float.Parse(Console.ReadLine());
                    double d = s;
                    double m = 2;
                    Console.WriteLine("Výsledek je: " + Math.Pow(s, m));
                }

                else
                    kalkulacka = true;

                Console.WriteLine("Přeješ si aplikaci spustit znovu? ano/ne");

                switch (Console.ReadLine())
                {
                    case "ano":
                        pokracovat = true;
                        break;
                    case "ne":
                        Environment.Exit(0);
                        break;
                    default:
                        Console.WriteLine("Zadal jste špatnou hodnotu");
                        break;
                }



                while (kalkulacka == true)
                {
                    Console.WriteLine("Pro začátek musíš zadat dvě čísla, se kterými budeš pracovat");
                    Console.WriteLine("Zadej první číslo: ");
                    float a;
                    while (!float.TryParse(Console.ReadLine(), out a))
                        Console.WriteLine("Zadal jste neplatné číslo");
                    Console.WriteLine("Zadej druhé číslo: ");
                    float b;
                    while (!float.TryParse(Console.ReadLine(), out b))
                        Console.WriteLine("Zadal jste neplatné číslo");
                    Console.WriteLine("Výborně, teď si vyber operaci: ");
                    Console.WriteLine("1 - sčítání");
                    Console.WriteLine("2 - odčítání");
                    Console.WriteLine("3 - násobení");
                    Console.WriteLine("4 - dělení");
                    char volba = Console.ReadKey().KeyChar;
                    Console.ReadKey();
                    Console.WriteLine("Zvolil jste volbu číslo: " + volba);
                    float vysledek = 0;
                    bool platnaVolba = true;
                    switch (volba)
                    {
                        case '1':
                            vysledek = a + b;
                            break;
                        case '2':
                            vysledek = a - b;
                            break;
                        case '3':
                            vysledek = a * b;
                            break;
                        case '4':
                            vysledek = a / b;
                            break;
                        default:
                            platnaVolba = false;
                            break;
                    }
                    if (platnaVolba)
                        Console.WriteLine("Výsledek: {0}", vysledek);
                    else
                        Console.WriteLine("Neplatná volba operace");
                    Console.WriteLine("Přejete si kalkulačku použít znovu? ano/ne");

                    platnaVolba = false;
                    while (!platnaVolba)
                    {
                        switch (Console.ReadLine().ToString().ToLower())
                        {
                            case "ano":
                                platnaVolba = true;
                                pokracovat = true;
                                break;
                            case "ne":
                                platnaVolba = true;
                                pokracovat = false;
                                break;
                            default:
                                Console.WriteLine("Neplatná volba. Zadejte ano/ne !");
                                break;
                        }


                    }

                    if (pokracovat)
                        Console.Clear();
                }
            }
            Console.ReadKey();
        }

        }
    }
 
Nahoru Odpovědět
18.11.2017 9:22
Avatar
Tomáš
Člen
Avatar
Odpovídá na Marek Lolek
Tomáš :18.11.2017 10:34

Ahoj Marku chybu máš v tom whilu i když maš pokračovat false ale while kalkulacka == true je pořád true takže mužeš např

switch (Console.ReadLine().ToString().ToLower())
                        {
                            case "ano":
                                platnaVolba = true;
                                pokracovat = true;
                                break;
                            case "ne":
                                platnaVolba = true;
                                pokracovat = false;
                                kalkulacka = false;
                                break;
                            default:
                                Console.WriteLine("Neplatná volba. Zadejte ano/ne !");
                                break;
                        }
 
Nahoru Odpovědět
18.11.2017 10:34
Avatar
Marek Lolek
Člen
Avatar
Marek Lolek:18.11.2017 10:39

Super, rád bych to vyzkoušel, ale prý mi chybí } v

while (mocninator)
                {
                    Console.WriteLine("Vybrál sis mocninátor");
                    Console.WriteLine("Zadejte číslo, které chcete umocnit");
                    float s = float.Parse(Console.ReadLine());
                    double d = s;
                    double m = 2;
                    Console.WriteLine("Výsledek je: " + Math.Pow(s, m));
                }
                else
                    kalkulacka = true;

a já vážně nevím co to má znamenat. Tam kde mají být složené závorky, tak tam jsou.

 
Nahoru Odpovědět
18.11.2017 10:39
Avatar
Tomáš
Člen
Avatar
Tomáš :18.11.2017 10:48

Ted asi nevím přesně co myslíš ale u mě tvůj kod funguje

      static void Main(string[] args)

        {

            bool kalkulacka = true;
            bool mocninator = false;
            bool pokracovat = true;
            while (pokracovat == true)
            {
                Console.WriteLine("Vítejte v mé aplikaci, pro začátek si vyber, jestli chceš spustit kalkulačku nebo mocninátor.");
                Console.WriteLine("1 - mocninátor");
                Console.WriteLine("2 - kalkulačka");
                int volba1 = int.Parse(Console.ReadLine());
                switch (volba1)
                {
                    case 1:
                        mocninator = true;
                        break;
                    case 2:
                        kalkulacka = true;
                        break;
                    default:
                        Console.WriteLine("Zadal jste špatnout hodnotu!");
                        break;
                }

                if (mocninator)
                {
                    Console.WriteLine("Vybrál sis mocninátor");
                    Console.WriteLine("Zadejte číslo, které chcete umocnit");
                    float s = float.Parse(Console.ReadLine());
                    double d = s;
                    double m = 2;
                    Console.WriteLine("Výsledek je: " + Math.Pow(s, m));
                    Console.WriteLine("Přeješ si aplikaci spustit znovu? ano/ne");


                }



                switch (Console.ReadLine())
                {
                    case "ano":
                        pokracovat = true;
                        break;
                    case "ne":
                        Environment.Exit(0);
                        break;
                }

                while (kalkulacka == true)
                {
                    Console.WriteLine("Pro začátek musíš zadat dvě čísla, se kterými budeš pracovat");
                    Console.WriteLine("Zadej první číslo: ");
                    float a;
                    while (!float.TryParse(Console.ReadLine(), out a))
                        Console.WriteLine("Zadal jste neplatné číslo");
                    Console.WriteLine("Zadej druhé číslo: ");
                    float b;
                    while (!float.TryParse(Console.ReadLine(), out b))
                        Console.WriteLine("Zadal jste neplatné číslo");
                    Console.WriteLine("Výborně, teď si vyber operaci: ");
                    Console.WriteLine("1 - sčítání");
                    Console.WriteLine("2 - odčítání");
                    Console.WriteLine("3 - násobení");
                    Console.WriteLine("4 - dělení");
                    char volba = Console.ReadKey().KeyChar;
                    Console.ReadKey();
                    Console.WriteLine("Zvolil jste volbu číslo: " + volba);
                    float vysledek = 0;
                    bool platnaVolba = true;
                    switch (volba)
                    {
                        case '1':
                            vysledek = a + b;
                            break;
                        case '2':
                            vysledek = a - b;
                            break;
                        case '3':
                            vysledek = a * b;
                            break;
                        case '4':
                            vysledek = a / b;
                            break;
                        default:
                            platnaVolba = false;
                            break;
                    }
                    if (platnaVolba)
                        Console.WriteLine("Výsledek: {0}", vysledek);
                    else
                        Console.WriteLine("Neplatná volba operace");
                    Console.WriteLine("Přejete si kalkulačku použít znovu? ano/ne");

                    platnaVolba = false;
                    while (!platnaVolba)
                    {
                        switch (Console.ReadLine().ToString().ToLower())
                        {
                            case "ano":
                                platnaVolba = true;
                                pokracovat = true;
                                break;
                            case "ne":
                                platnaVolba = true;
                                pokracovat = false;
                                kalkulacka = false;
                                break;
                            default:
                                Console.WriteLine("Neplatná volba. Zadejte ano/ne !");
                                break;
                        }


                    }

                    if (pokracovat)
                        Console.Clear();
                }
            }

        }

    }
}
 
Nahoru Odpovědět
18.11.2017 10:48
Avatar
Marek Lolek
Člen
Avatar
Marek Lolek:18.11.2017 11:05

Závažnost Kód Popis Projekt Soubor Řádek Stav potlačení
Chyba CS1513 Očekával se znak }. WhatAnApp C:\Users\Petr\sou­rce\repos\Wha­tAnApp\WhatAnAp­p\Program.cs 46 Aktivní

 
Nahoru Odpovědět
18.11.2017 11:05
Avatar
Marek Lolek
Člen
Avatar
Marek Lolek:18.11.2017 11:11

Tak tu chybu jsem už upravil, ale netuším jak ti to může jít. Když vyberu mocninátor, tak se mě pak nezeptá, jestli chci aplikaci spustit znovu. Když vyberu kalkulačku, tak ta se ani nespustí, ale rovnou se mě zeptá, jestli nechci spustit aplikaci znovu.
No asi to vidím tak, že si k tomu potom sednu a nějak to celé předělám.

 
Nahoru Odpovědět
18.11.2017 11:11
Avatar
Tomáš
Člen
Avatar
Odpovídá na Marek Lolek
Tomáš :18.11.2017 11:32

Ano nefunguje to dobře zaměřoval jsem se jen na na kalkulačku.Pře­devším bych uplně zrušil ten mocninator a to logiku hodil do kalkulačky.

 
Nahoru Odpovědět
18.11.2017 11:32
Avatar
Marek Lolek
Člen
Avatar
Marek Lolek:18.11.2017 11:49

Tak jsem se na to podíval a byly tam strašně stupidní chyby. Např. když se při mocninátoru aplikace zeptala, jestli chci program spustit znovu, tak jsem tam dal pokracovat = true, ale nedal jsem hodnotu mocninátoru na false.
Další stupidní chyba byla ta, že jsem

switch (Console.ReadLine().ToString().ToLower())
                    {
                        case "ano":
                            pokracovat = true;
                            mocninator = false;
                            Console.Clear();
                            break;
                        case "ne":
                            Environment.Exit(0);
                            break;
                        default:
                            Console.WriteLine("Špatná volba");
                            break;
                    }

neměl v bloku s mocninátorem.

Takže teď ještě udělám pár úprav a vrhnu se na další lekce c#.

namespace WhatAnApp
{
    class Program
    {
        static void Main(string[] args)


        {

            bool kalkulacka = false;
            bool mocninator = false;
            bool pokracovat = true;
            while (pokracovat == true)
            {
                Console.WriteLine("Vítejte v mé aplikaci, pro začátek si vyber, jestli chceš spustit kalkulačku nebo mocninátor.");
                Console.WriteLine("1 - mocninátor");
                Console.WriteLine("2 - kalkulačka");
                int volba1 = int.Parse(Console.ReadLine());
                switch (volba1)
                {
                    case 1:
                        mocninator = true;
                        Console.Clear();
                        break;
                    case 2:
                        kalkulacka = true;
                        Console.Clear();
                        break;
                    default:
                        Console.WriteLine("Zadal jste špatnout hodnotu!");
                        break;
                }

                if (mocninator)
                {
                    Console.WriteLine("Vybrál sis mocninátor");
                    Console.WriteLine("Zadejte číslo, které chcete umocnit");
                    float s = float.Parse(Console.ReadLine());
                    double d = s;
                    double m = 2;
                    Console.WriteLine("Výsledek je: " + Math.Pow(s, m));
                    Console.WriteLine("Přeješ si aplikaci použit znovu? ano/ne");

                    switch (Console.ReadLine().ToString().ToLower())
                    {
                        case "ano":
                            pokracovat = true;
                            mocninator = false;
                            Console.Clear();
                            break;
                        case "ne":
                            Environment.Exit(0);
                            break;
                        default:
                            Console.WriteLine("Špatná volba");
                            break;
                    }
                }
                while (kalkulacka == true)
                {
                    Console.WriteLine("Pro začátek musíš zadat dvě čísla, se kterými budeš pracovat");
                    Console.WriteLine("Zadej první číslo: ");
                    float a;
                    while (!float.TryParse(Console.ReadLine(), out a))
                        Console.WriteLine("Zadal jste neplatné číslo");
                    Console.WriteLine("Zadej druhé číslo: ");
                    float b;
                    while (!float.TryParse(Console.ReadLine(), out b))
                        Console.WriteLine("Zadal jste neplatné číslo");
                    Console.WriteLine("Výborně, teď si vyber operaci: ");
                    Console.WriteLine("1 - sčítání");
                    Console.WriteLine("2 - odčítání");
                    Console.WriteLine("3 - násobení");
                    Console.WriteLine("4 - dělení");
                    char volba = Console.ReadKey().KeyChar;
                    Console.ReadKey();
                    Console.WriteLine("Zvolil jste volbu číslo: " + volba);
                    float vysledek = 0;
                    bool platnaVolba = true;
                    switch (volba)
                    {
                        case '1':
                            vysledek = a + b;
                            break;
                        case '2':
                            vysledek = a - b;
                            break;
                        case '3':
                            vysledek = a * b;
                            break;
                        case '4':
                            vysledek = a / b;
                            break;
                        default:
                            platnaVolba = false;
                            break;
                    }
                    if (platnaVolba)
                        Console.WriteLine("Výsledek: {0}", vysledek);
                    else
                        Console.WriteLine("Neplatná volba operace");
                    Console.WriteLine("Přejete si aplikaci použít znovu? ano/ne");

                    platnaVolba = false;
                    while (!platnaVolba)
                    {
                        switch (Console.ReadLine().ToString().ToLower())
                        {
                            case "ano":
                                platnaVolba = true;
                                pokracovat = true;
                                kalkulacka = false;
                                Console.Clear();
                                break;
                            case "ne":
                                platnaVolba = true;
                                pokracovat = false;
                                kalkulacka = false;
                                break;
                            default:
                                Console.WriteLine("Neplatná volba. Zadejte ano/ne !");
                                break;
                        }
                    }
                }
            }

        }

    }
}
Akceptované řešení
+5 Zkušeností
Řešení problému
 
Nahoru Odpovědět
18.11.2017 11:49
Avatar
Marek Lolek
Člen
Avatar
Odpovídá na Tomáš
Marek Lolek:18.11.2017 11:50

Jo to bych mohl, ale chtěl jsem to takhle. Přišlo mi, že bych si to na tom procvičil lépe.

 
Nahoru Odpovědět
18.11.2017 11:50
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 11 zpráv z 11.