Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem matlab - dělení devíti

Dobrý den,
pokouším se v Matlabu napsat jednoduchý program, ale moc nevím jak na to. Cílem je abych zadal nějaký interval... a Matlab mi vypsal čísla, která jsou z toho intervalu dělitelná devíti.

Neporadil by mi někdo prosům jakou mám použít funkce?
1. určitě tam bude cyklus
2. použiji funkci mod
3. jakou fci použít aby mi Matlab řekl, že zrovna toto číslo je dělitelné devíti?

Děkuji

Předmět Autor Datum
Jestli je číslo dělitelné devíti ti řekne právě funkce mod.
Wikan 04.12.2017 21:04
Wikan
najdeš první číslo z intervalu dělitelné 9 (buď reálným modem čísla, nebo ciferným součtem a mod 9),…
touchwood 04.12.2017 21:04
touchwood
Já jsem myslel, že pomocí mod zjistím pouze zda dělení funkce vyjde bezezbytku...
Matlab 04.12.2017 21:23
Matlab
Ne, tím zjistíš zbytek po dělení.
Wikan 04.12.2017 21:24
Wikan
No, když vydělíš konkrétní číslo devíti beze zbytku, tím zjistíš, že toto číslo je dělitelné devíti.…
host 04.12.2017 21:26
host
Nevím, jestli to pomůže, ale znakem dělitelnosti 9 je ciferný součet dělitelný 9. Takže uděláš cifer…
Pytlík 04.12.2017 21:35
Pytlík
Pro člověka se tenhle postup hodí, ale pro stroj je oproti funkci modulo ukrutně pomalý.
Wikan 04.12.2017 21:38
Wikan
Přesně tak, navíc ono se to dá ještě zjednodušit/optimalizovat, vezmu první číslo z intervalu, udělá…
touchwood 05.12.2017 05:54
touchwood
Ale čo ak v reťazci nebo v poli je napr. 9, je tam i 27 ale nieje tam 18... modulo každej hodnoty je…
Mlocik97 05.12.2017 07:10
Mlocik97
Cílem je abych zadal nějaký interval.…
touchwood 05.12.2017 07:17
touchwood
V zadání je interval. Ten je daný počáteční a konečnou hodnotou.
Jan Fiala 05.12.2017 07:17
Jan Fiala
Jo pravda, som to prehliadol.
Mlocik97 05.12.2017 12:00
Mlocik97
napiš do příkazového řádku help mod a dostane se ti daleko obsáhlejšího popisu a ještě obsáhlejšího…
ml1 05.12.2017 18:36
ml1
Budeš používať modulo a ak zvyšok je nula zapíšeš dané číslo do ďalšieho pola. Jednoduchá podm9enka…
Mlocik97 05.12.2017 07:05
Mlocik97
Takhle to dopadá, když někdo chce programovat, aniž by se naučil a pochopil algoritmizaci problému.…
Machr55 05.12.2017 08:28
Machr55
Tak tak, základem každého programu v libovolném jazyce je algoritmizace problému. Jen tak pro zajím… poslední
ml1 05.12.2017 18:46
ml1

Přesně tak, navíc ono se to dá ještě zjednodušit/optimalizovat, vezmu první číslo z intervalu, udělám mod 9, vezmu zbytek tohoto dělení (mod) a pokud je roven nule, mám první číslo dělitelné devíti. Pokud je větší než nula, tento zbytek přičtu k tomuto číslu a mám první číslo z intervalu dělitelné devíti. Následně už jen přičítám 9, dokud se nedostanu z intervalu.

napiš do příkazového řádku help mod a dostane se ti daleko obsáhlejšího popisu a ještě obsáhlejšího při doc mod. To se dá aplikovat na každý příkaz včetně vlastních funkcí a skriptů (za předpokladu, že se člověk namáhal s napsáním pár slov jako dokumentace).

V matlabu je třeba zajímavé, že funkce mod bere i necelá čísla. Vůbec neni problém dělat modulo 2*pi (převod úhlu do základního intervalu) a podobné vylomeniny.

Jinak matlab má velice slušnou nápovědu a řadu příkladů. Jen jako u všeho musí člověk trochu předvídat, co hledá. Zejména s úplnými základy je trochu problém, samozřejmě že to v nápovědě je, ale těžko najdete třeba cell array, když nevíte, že hledáte cell array.

Budeš používať modulo a ak zvyšok je nula zapíšeš dané číslo do ďalšieho pola. Jednoduchá podm9enka if/else nebo použiť ternary operator. To vložit do cyklu for kde i bude index pola.

U reťazca je to obdobne.

Takhle to dopadá, když někdo chce programovat, aniž by se naučil a pochopil algoritmizaci problému.
Načrtnu postup:

1. Číslo = začátek intervalu
2. Zbytek = Číslo MOD 9
3. když Zbytek > 0, pak Číslo = Číslo + (9 - Zbytek)
4. cyklus dokud Číslo < konec intervalu
5.   vypiš Číslo   (pozn.: toto číslo je dělitelné 9)
6.   Číslo = Číslo + 9
7. konec cyklu

Určitě by se to dalo postupovat i jinak, tohle je jedna z možností.

Tak tak, základem každého programu v libovolném jazyce je algoritmizace problému.

Jen tak pro zajímavost speciálně pro matlab se to dá vyřešit i bez explicitního cyklu, zkusím naznačit

cisla = prvni:posledni;%středník nezapomenout, jinak se vypíšou, platí i pro další řádky
vyber = mod (cisla,delitel);
.....nyní vyhledat nulové výsledky, to se mi nechce hledat, už musím končit (funkce find s příslušnými parametry něco jako indexy = find(...))
..... a vypsat podle indexů nulových zbytků
disp(cisla(indexy))
.....nebo někam uložit
hlcisla = cisla(indexy)

Zpět do poradny Odpovědět na původní otázku Nahoru