Využij akce až 80 % zdarma při nákupu e-learningu. Více informací.
Pouze tento týden sleva až 80 % na e-learning týkající se Pythonu
python week
Avatar
Ondrej Zadrapa:15.5.2020 13:16

Caute, mam drobny problém. Mam napsat program, ve kterem zadam libovolne číslo a obratem mi program vypise všechny jeho delitele krome zadaneho cisla a jednicky. Je to z toho duvodu, aby byl program schopen rozeznat prvočíslo od ostatních cisel. No a to je ten problém, opet je to něco, co jsem nikdy nedelal, když zadam číslo 12, tak to vypise 1,2,3,4,6,12, coz je v poradku, jenze když zadam 13, vyjde mi 13 a 1. Pomaham si vytvorenim podmínky po cyklu, ze jsem zadal promennou pocetDelitelu = 0, aby, az se mi povede presvedcit program, aby mi vypsal u 12 jenom 2,3,4,6 a tim padem u 13 by mi byl schopen oznámit, ze zadane číslo je prvočíslo.

Zkusil jsem:

Sub Main()
        Console.Write("Zadej cislo: ")
        Dim zadane As Integer = Console.ReadLine()
        Dim pocetDelitelu = 0
        For i As Integer = 1 To zadane
            If zadane Mod i = 0 Then
                Console.Write("{0} ", i)
            End If
            pocetDelitelu += 1
        Next
        If pocetDelitelu = 0 Then
            Console.WriteLine("Jedna se o prvocislo")
        End If
        Console.ReadKey()
    End Sub

Chci docílit: Mym cilem je, aby program rozlisoval cisla delitelna beze zbytku a prvočísla. Predem dekuji.

 
Odpovědět
15.5.2020 13:16
Avatar
Alesh
Překladatel
Avatar
Odpovídá na Ondrej Zadrapa
Alesh:15.5.2020 13:43

Nejdřív požaduješ, aby program vypsal všechny jeho dělitele kromě zadaného čísla a jedničky, pak ale píšeš, že u 12 je v pořádku výstup: 1,2,3,4,6,12 (jednička i číslo samotné tak je, což je v rozporu s tou první větou).
Nestačilo by ti tedy upravit cyklus:

For i As Integer = 2 To zadane - 1
 
Nahoru Odpovědět
15.5.2020 13:43
Avatar
Odpovídá na Alesh
Ondrej Zadrapa:15.5.2020 14:07

Ja jsem zacatecnik, mam dost problém se spravnym vyjadrovanim k věci. Ale reseni funguje, diky.

 
Nahoru Odpovědět
15.5.2020 14:07
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
Avatar
DarkCoder
Člen
Avatar
Odpovídá na Ondrej Zadrapa
DarkCoder:15.5.2020 14:13

Je třeba být jasnější v zadávání toho co se má udělat. Rozpory jsou zde minimálně dva.

Pro eliminaci čísla 1 a toho samého čísla Ti už poradil Alesh. Jinak za polovinou už nemá smysl testovat, pokud do té doby se nenašel dělitel. Číslo je pak automaticky prvočíslo.

Je tedy třeba určit pouze to zda číslo je prvočíslem nebo není?

Spíše bych to viděl na variantu kde v případě, že číslo je prvočíslem, tak se vypíše hláška: "Číslo X je prvočíslo.". A v případě, že číslo není prvočíslem se vypíše hláška: "Číslo X není prvočíslem, je dělitelné: x,x,x,x".

No a to je ten problém, opet je to něco, co jsem nikdy nedelal

Takto přemýšlet nesmíš! Kdyby se tímto řídili všichni, nic nového by nevzniklo.

Je třeba zamyslet se jak je možné úlohu řešit a jaké prostředky k tomu budeš potřebovat. Operace modulo je v tomto případě to hlavní. Předčasné ukončení cyklu je další věc, kterou využiješ, pokud chceš mít program skutečně efektivní.

Nahoru Odpovědět
15.5.2020 14:13
"„Učíš-li se proto, aby sis zapamatoval, zapomeneš. Učíš-li se proto, abys porozuměl, zapamatuješ si."
Avatar
Ondrej Zadrapa:15.5.2020 15:01

Ted to dela presne to, co to ma delat, i při zadani jinych cisel, co jsou prvočísla, je program rozlisi.

 
Nahoru Odpovědět
15.5.2020 15:01
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 5 zpráv z 5.