Mikuláš je tu! Získaj 90 % extra kreditov ZADARMO s promo kódom CERTIK90 pri nákupe od 1 199 kreditov. Len do nedele 7. 12. 2025! Zisti viac:
NOVINKA: Najžiadanejšie rekvalifikačné kurzy teraz s 50% zľavou + kurz AI ZADARMO. Nečakaj, táto ponuka dlho nevydrží! Zisti viac:

Diskusia – 8. diel - Ošetrenie užívateľských vstupov v C# .NET

Späť

Upozorňujeme, že diskusie pod našimi online kurzami sú nemoderované a primárne slúžia na získavanie spätnej väzby pre budúce vylepšenie kurzov. Pre študentov našich rekvalifikačných kurzov ponúkame možnosť priameho kontaktu s lektormi a študijným referentom pre osobné konzultácie a podporu v rámci ich štúdia. Toto je exkluzívna služba, ktorá zaisťuje kvalitnú a cielenú pomoc v prípade akýchkoľvek otázok alebo projektov.

Komentáre
Posledné komentáre sú na spodnej časti poslednej stránky.
Avatar
Ľubomír Prokopovič:8.7.2014 15:41

ja som cely switch upravil pomocou fcie goto. nie je to takto jednoduchsie?

Znova:
                Console.WriteLine("Zvolte si operaci:");
                Console.WriteLine("1 - sčítání");
                Console.WriteLine("2 - odčítání");
                Console.WriteLine("3 - násobení");
                Console.WriteLine("4 - dělení");
                int volba = int.Parse(Console.ReadLine());
                float vysledok = 0;
                switch (volba)
                {
                    case 1:
                        vysledok = a + b;
                        break;

                    case 2:
                        vysledok = a - b;
                        break;

                    case 3:
                        vysledok = a * b;
                        break;

                    case 4:
                        vysledok = a / b;
                        break;

                    default:
                        Console.WriteLine("Zle zadanie. Skuste znova.");
                        goto Znova;
Odpovedať
"Počítače jsou jako Bůh ve Starém zákoně - hodně příkazů a žádné slitování." Joseph Campbell
Avatar
Ľubomír Prokopovič:8.7.2014 15:50

Teraz som si vsimol ze znaky to nebere

Odpovedať
"Počítače jsou jako Bůh ve Starém zákoně - hodně příkazů a žádné slitování." Joseph Campbell
Avatar
Ľubomír Prokopovič:8.7.2014 18:41

Vedel by mi niekto vysvetlit tuto cast kodu? som sa v tom nejak stratil. Preco menime platnaVolba na false?

platnaVolba = false;
                while(!platnaVolba)
                {
                    switch (Console.ReadKey().KeyChar.ToString().ToLower())
                    {
                        case"a":
                            pokracovat = true;
                            platnaVolba = true;
                            break;

                        case"n":
                            pokracovat = false;
                            platnaVolba = true;
                            break;
                        default:
                            Console.WriteLine("Neplatna volba zadajte volbu znova [a/n]");
                            break;
                    }
Odpovedať
"Počítače jsou jako Bůh ve Starém zákoně - hodně příkazů a žádné slitování." Joseph Campbell
Avatar
Jan Vargovský
Tvůrce
Avatar
Odpovedá na Ľubomír Prokopovič
Jan Vargovský:8.7.2014 20:02

Dokud nezadáš 'a' nebo 'n' tak se vždycky načte znak, převede na string a popřípadě změní na malé. Ono to jde napsat i takhle:

char.ToLower(Console.ReadKey())

Nevím proč to tu je tak složitě. Pak by jsi jen neswitchoval string ale char.

Avatar
Ľubomír Prokopovič:8.7.2014 21:08

aha jasne dik :) Len este jedna otazka: preco sa tam meni platbaVolba na false a cely switch sa este dava do while cyklu? ked som ten while cyklus vymazal tak to funguje tak isto ci sa mylim?

Odpovedať
"Počítače jsou jako Bůh ve Starém zákoně - hodně příkazů a žádné slitování." Joseph Campbell
Avatar
Sub zero z mortal combat :9.8.2014 18:34

A co tohle! je to asi krapet delší ale taky to faká , kdyby šlo pořešit že by volba zůstala .int jenže tam je problém právě u klávesnice ..pokud uživatel zadá string tak se to zblázní a to neumím ošetřit aby to nezmagořilo.

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

namespace ConsoleApplication1
{
    class Maple_hadra
    {
        static void Main(string[] args)
        {
            char pokracovat = 'a';
            Console.WriteLine("Vítejte v programu Maple hadra v 2.3");
            Console.WriteLine("V2.3- ošetřeny vstupy od uživatele");
            while (pokracovat == 'a')
            {

                Console.WriteLine("Ze seznamu vyberte operaci kterou chcete provést");
                Console.WriteLine("sečtení dvou čísel :1");
                Console.WriteLine("odečtení dvou čísel:2");
                Console.WriteLine("násobení dvou čísel:3");
                Console.WriteLine("dělení dvou čísel:4");
                Console.WriteLine("mocnina čísla:5");
                Console.WriteLine("odmocnina čísla:6");
                char volba = Console.ReadKey().KeyChar;
                double vysledek = 0;
                if ((volba == '1') || (volba == '2') || (volba == '3') || (volba == '4'))
                {
                    Console.WriteLine("Zadejte první číslo");
                    double prvni;
                    while (!double.TryParse(Console.ReadLine(), out prvni)) /*ošetření vstupu */
                        Console.WriteLine("Neplatné číslo, zadejte prosím znovu:");
                    Console.WriteLine("Zadejte druhé číslo");
                    double druhe;
                    while (!double.TryParse(Console.ReadLine(), out druhe)) /*ošetření vstupu */
                        Console.WriteLine("Neplatné číslo, zadejte prosím znovu:");
                    switch (volba)
                    {
                        case '1':
                            vysledek = prvni + druhe;
                            break;
                        case '2':
                            vysledek = prvni - druhe;
                            break;
                        case '3':
                            vysledek = prvni * druhe;
                            break;
                        case '4':
                            vysledek = prvni / druhe;
                            break;
                    }
                 Console.WriteLine("Vysledek je {0}", vysledek);
                }
                else if ((volba == '5') || (volba == '6'))
                {
                    Console.WriteLine("Zadejte číslo");
                    double prvni = double.Parse(Console.ReadLine());
                    switch (volba)
                    {
                        case '5':
                            vysledek = prvni * prvni;
                            break;
                        case '6':
                            vysledek = Math.Sqrt(prvni);
                            break;
                    }
                    Console.WriteLine("Vysledek je {0}", vysledek);
                }

                else
                {
                    Console.WriteLine("neplatná volba");
                }
                do
                {
                    Console.WriteLine("Přejete si zadat další příklad? [a/n]");
                    pokracovat = Console.ReadKey().KeyChar;
                }
                while (!((pokracovat == 'n') || (pokracovat == 'a')));
            }
            Console.WriteLine("ZZZAAATTTÍÍÍÍMMM!");
        }

    }

}
Avatar
Sub zero z mortal combat :9.8.2014 19:14

blbost tak to šlo i s** int.** :D
a navíc jsem našel ještě jednu chybku které jsem si prvně nevšiml že to jde uživatelem zmršit. No ono toho je ještě víc.... teoreticky pokud někdo zadá mega velké číslo tak se to taky zblázní...ale to už asi opravdu nemá pak smysl řešit.

int volba;
                while (!int.TryParse(Console.ReadLine(), out volba))
                     {
                    Console.WriteLine("Neplatná volba, zadejte prosím znovu:");
                     }
                double vysledek = 0;
                if ((volba >= 1) && (volba <= 4))
                {
                    Console.WriteLine("Zadejte první číslo");
                    double prvni;
                    while (!double.TryParse(Console.ReadLine(), out prvni))
                        Console.WriteLine("Neplatné číslo, zadejte prosím znovu:");
                    Console.WriteLine("Zadejte druhé číslo");
                    double druhe;
                    while (!double.TryParse(Console.ReadLine(), out druhe))
                        Console.WriteLine("Neplatné číslo, zadejte prosím znovu:");
                    switch (volba)
                    {
                        case 1:
                            vysledek = prvni + druhe;
                            break;
                        case 2:
                            vysledek = prvni - druhe;
                            break;
                        case 3:
                            vysledek = prvni * druhe;
                            break;
                        case 4:
                            vysledek = prvni / druhe;
                            break;
                    }
                 Console.WriteLine("Vysledek je {0}", vysledek);
                }
                else if ((volba == 5) || (volba == 6))
                {
                    Console.WriteLine("Zadejte číslo");
                    double prvni;
                        while (!double.TryParse(Console.ReadLine(), out prvni))
                        Console.WriteLine("Neplatné číslo, zadejte prosím znovu:");
                    switch (volba)
                    {
                        case 5:
                            vysledek = prvni * prvni;
                            Console.WriteLine("Vysledek je {0}", vysledek);
                            break;
                        case 6:
                            {
                            if (prvni >= 0)
                                {
                                    vysledek = Math.Sqrt(prvni);
                                    Console.WriteLine("Vysledek je {0}", vysledek);
                                }
                            else
                                Console.WriteLine("Při odmocňování musí být číslo větší nebo alespoň rovno 0");
                            break;
                            }
Editované
Avatar
Sub zero z mortal combat :9.8.2014 19:22

A teď jedna otázka trochu mimo mísu , celkem mi to trvalo než jsem udělal tu variantu jedna páč sem nevěděl jak ve visual express 2010 sledovat proměnné krok po kroku , vím že to nějak jde, ale zatím jsem na to nepřišel , chvíli jsem googlil ale asi špatně...Poradí mi někdo?

Avatar
D0ll0k
Člen
Avatar
Odpovedá na Ľubomír Prokopovič
D0ll0k:13.8.2014 17:54

Protože, když se tě kalkulačka na konci zeptá, jestli chceš zadat nový příklad a ty dáš "a", tak po druhém příkladu se tě nezeptá, ale jede znova. Protože podmínka u while cyklu je neplatná. Kvůli tomu tam musí být: "platnaVolba = false;" ,aby jsi mohl znova zadat "a" nebo "n".

Odpovedať
Veni, vidi, programmato
Avatar
D0ll0k
Člen
Avatar
D0ll0k:13.8.2014 17:59

Akorát to má jeden háček. Jakmile zadáš špatně operaci, musíš znova zadat celý příklad. Stačilo by dát WHILE, IF a ELSE do while cyklu. Jinak super tutoriály :)

Editované
Odpovedať
Veni, vidi, programmato
Posledné komentáre sú na spodnej časti poslednej stránky.
Robíme čo je v našich silách, aby bola tunajšia diskusia čo najkvalitnejšia. Preto do nej tiež môžu prispievať len registrovaní členovia. Pre zapojenie sa do diskusie sa zaloguj. Ak ešte nemáš účet, zaregistruj sa, je to zadarmo.

Zobrazené 10 správy z 149.