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
Ondrej Zadrapa:15.5.2020 11:54

Caute, mam takovy usmevny problém, nejak neumim predcasne ukoncit cyklus FOR u programu procvicovani male násobilky. Nebo spis jsou me snahy programem uplne ignorovany, proste muzu psat jakoukoliv celouciselnou cifru, program me opravi a smele pokracuje dále. Muzete mi někdo poradit, co tam pridat, popřípadě ubrat, upravit, aby to při zadani konkretni kombinace cisel predcasne ukončilo cyklus a ja se dozvedel, kolik mam spravne a kolik dobře? Predem diky.

Zkusil jsem:

Sub Main()
        Dim randomA As New Random
        Dim randomB As New Random
        Dim celkemDobre = 0
        Dim celkemSpatne = 0
        Dim konec As Boolean = False
        For a As Integer = 1 To 10
            For b As Integer = 1 To 10
                a = randomA.Next(1, 10)
                b = randomB.Next(1, 10)
                Dim vysledek = a * b
                Console.Write("{0}*{1} = ", a, b)
                Dim zadane As Integer = Console.ReadLine().ToLower().Trim()
                If vysledek <> zadane Then
                    Console.WriteLine("Ne, spravny vysledek je {0}", (a * b))
                    celkemSpatne += 1
                ElseIf zadane = "00" Then
                    konec = True
                Else
                    celkemDobre += 1
                End If
            Next
        Next
        Console.WriteLine()
        Console.WriteLine("Celkovy pocet spravnych vysledku: {0}", celkemDobre)
        Console.WriteLine()
        Console.WriteLine("Celkovy pocet spatnych vysledku: {0}", celkemSpatne)
        Console.ReadKey()
    End Sub

Chci docílit: Abych zadanim nejake kombinace cisel, třeba "000" ukoncil cyklus a konzole aby mi tim padem vypsala pocet spravnych a pocet spatnych vysledku a zavrel se.

 
Odpovědět
15.5.2020 11:54
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:15.5.2020 12:38

goole = c sharp end cycle

using System;



namespace Tutlane

{

    class Program

    {

        static void Main(string[] args)

        {

            for (int i = 1; i <= 4; i++)

            {

                if (i == 3)

                    break;

                Console.WriteLine("i value: {0}", i);

            }

            Console.WriteLine("Press Enter Key to Exit..");

            Console.ReadLine();

        }

    }

}

google = c sharp end double loop
https://kodify.net/…reak-nested/
goto, return, 2x break
Lepsi jazyky umoznuji za break pripsat jeste cislo, kolikrat to ma breaknout, pak by ti stacilo napsat

if (...) break 1; #cisluje se od nuly
Editováno 15.5.2020 12:39
 
Nahoru Odpovědět
15.5.2020 12:38
Avatar
Odpovídá na Peter Mlich
Ondrej Zadrapa:15.5.2020 12:42

Diky, ale ted jsem cetl zadani podruhe a zrejme v tom s tim pocitali, protože jsem mel vypsat jenom 10 prikladu, tak stacilo upravit cykly a je to. Ale i tak dik, to se bude hodit.

 
Nahoru Odpovědět
15.5.2020 12:42
Avatar
DarkCoder
Člen
Avatar
Odpovídá na Ondrej Zadrapa
DarkCoder:15.5.2020 14:26

Zde není důvod vnořovat jeden cyklus do druhého. Maximální počet příkladů je dán počtem iterací jednoho for cyklu. Jaké hodnoty se použijí pro první a druhý operand je dáno generátorem náhodných čísel v rozsahu. V programu je třeba nemotat dohromady číselné hodnoty s čísly, které jsou prezentovány jako řetězec. Dále je třeba nejprve vše výsledkově vyhodnotit a až pak se určovat co se má dělat. Pokud by se toto nedodrželo, nemusí výsledky odpovídat skutečnosti.

Z příspěvku který poslal Peter Mlich by jsi si měl odnést hlavně to jaký řídící příkaz ukočuje cyklus - BREAK. A to že řídící příkaz BREAK ukončuje cyklus ve kterém se nachází.

Nahoru Odpovědět
15.5.2020 14:26
"I ta nejlepší poučka postrádá na významu, není-li patřičně předána." - DarkCoder
Avatar
Odpovídá na DarkCoder
Ondrej Zadrapa:15.5.2020 14:46

Já jsem čerpal z toho, na co jsem si vzpomněl z jedné knížky, původně jsem začal se c# a věděl jsem, že to funguje, tak jsem to použil.

 
Nahoru Odpovědět
15.5.2020 14:46
Avatar
DarkCoder
Člen
Avatar
Odpovídá na Ondrej Zadrapa
DarkCoder:15.5.2020 15:09

Určitě to v té knížce bylo jinak, protože:

For a As Integer = 1 To 10
    For b As Integer = 1 To 10
        a = randomA.Next(1, 10)
        b = randomB.Next(1, 10)
    Next
Next

Takovýto zápis postrádá logiku co se ohledně počtu iterací týče. řídící proměnné jsou přenastavovány generátorem náhodných čísel a tudíž počet iterací může být v počtu od 1 do nekonečna.

Nahoru Odpovědět
15.5.2020 15:09
"I ta nejlepší poučka postrádá na významu, není-li patřičně předána." - DarkCoder
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:15.5.2020 15:21

ono to jde zapsat i takto:

int i = 0;

while (i < 10 && konec==false)
{
    Console.WriteLine("Value of i: {0}", i);

    i++;
}

# ---

for (int i = 1; i <= 4 && konec==false ; i++)

            {
...
 
Nahoru Odpovědět
15.5.2020 15:21
Avatar
Odpovídá na DarkCoder
Ondrej Zadrapa:15.5.2020 18:37

No, byl bez náhodných čísel, no zkrátka mi to tohle připomnělo, zkusil jsem to a funguje to, na druhou stranu, zjišťuji, že všechno má hromadu způsobů řešení, tak to určitě nezavrhnu, určitě to znát není na škodu.

 
Nahoru Odpovědět
15.5.2020 18:37
Avatar
DarkCoder
Člen
Avatar
Odpovídá na Ondrej Zadrapa
DarkCoder:15.5.2020 18:54

Ty dva cykly které si někde v programu viděl byly pro generování všech kombinací pro oba operandy. K cíli se lze dostat mnoha způsoby. Časem poznáš, co použít pro nalezení optimálního řešení. Aby si takové nalezl potřebuješ znát dvě věci. Tou první je dokonalá znalost jazyka ve kterém se toho daného úkolu snažíš dosáhnout, druhá je naučit se přijít na způsob jak toho dosáhnout. Čím více toho budeš o jazyku znát, tím více možností se Ti naskytne a budeš tak moci vybrat tu optimální.

Nahoru Odpovědět
15.5.2020 18:54
"I ta nejlepší poučka postrádá na významu, není-li patřičně předána." - DarkCoder
Avatar
Odpovídá na DarkCoder
Ondrej Zadrapa:15.5.2020 19:13

A proto mě to baví, i když u toho většinu času sedím ztrápený a zhnusený, není to nuda, nebo spíš to nikdy nebude nuda.

 
Nahoru Odpovědět
15.5.2020 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 10 zpráv z 10.