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í.

Diskuze: Jak primet program, aby mi vypsal delitele zadaneho cisla

Aktivity
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
Tvůrce
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
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
"I ta nejlepší poučka postrádá na významu, není-li patřičně předána." - DarkCoder
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.