Autor | Zpráva | ||
---|---|---|---|
M** Profil * |
#1 · Zasláno: 11. 4. 2007, 17:27:43
Opakování podmínky "IF"
|
||
M** Profil * |
#2 · Zasláno: 11. 4. 2007, 17:31:31
Mám tento kód:
<? $delenec01 = Rand (1,50); $delitel02 = Rand (1,5); $vysledek0 = $delenec01 / $delitel02; $zbytek = $delenec01 % $delitel02; if ($zbytek==0) {echo $delenec01; echo " : "; echo $delitel02; echo " = ";} else{$delenec01 = Rand (1,50); $delitel02 = Rand (1,5); $vysledek0 = $delenec01 / $delitel02; $zbytek = $delenec01 % $delitel02;} ?> Potřebuji, aby $delenec01 byl dělitelný číslem $delitel02 Nic jednodušího mě nenapadlo, něž podmínka IF. Ale jak to opakovat donekonečna, než to ta správná čísla vyhodí? Prosím, pomozte :O help |
||
M** Profil * |
#3 · Zasláno: 11. 4. 2007, 17:32:52
(prostě aby $delenec01 byl dělitelný číslem $delitel02 beze zbytku)
|
||
Petr Tichý Profil |
#4 · Zasláno: 11. 4. 2007, 17:34:37
Co použít cyklus for, který se ukončí, když bude zbytek 0? (samozřejmě se uvnitř cyklu bude generovat číslo nové)
|
||
Alphard Profil |
#5 · Zasláno: 11. 4. 2007, 17:37:33
Ale jak to opakovat donekonečna, než to ta správná čísla vyhodí?
cyklus, ale pozor, mohl by být skutečně nekonečný IMHO lepší řešení by bylo určit $delitel02, a další číslo, vzájemně je vynásobit a tím se získá $delenec01 |
||
Petr Tichý Profil |
#6 · Zasláno: 11. 4. 2007, 17:40:21
IMHO lepší řešení by bylo určit $delitel02, a další číslo, vzájemně je vynásobit a tím se získá $delenec01
Hele toto je dobré. Kéž by mě to také takto rychle napadlo. |
||
M** Profil * |
#7 · Zasláno: 11. 4. 2007, 17:47:30
IMHO lepší řešení by bylo určit $delitel02, a další číslo, vzájemně je vynásobit a tím se získá $delenec01 no jo, to vypadá dobře |
||
M** Profil * |
#8 · Zasláno: 11. 4. 2007, 17:56:52
IMHO lepší řešení by bylo určit $delitel02, a další číslo, vzájemně je vynásobit a tím se získá $delenec01
ale má to háček. já potřebuji číslo pokaždé jiné ( proto tam mám Rand() ) Například: $delitel02 = 5 $dalsicislo = 2 $delenec01 = $delitel02 * $dalsicislo //10 $vysledek0 = $delenec01 / $delitel02 //2 Takže $dalsicislo = $vysledek0 A vyhodí to ten stejný příklad. Asi přeci jen budu muset použít ty cykly. :( |
||
M** Profil * |
#9 · Zasláno: 11. 4. 2007, 18:39:55
Použil jsem cykl while.
Kód vypadá takto: <? $delenec01 = Rand (1,50); $delitel02 = Rand (1,5); $vysledek0 = $delenec01 / $delitel02; $zbytek = $delenec01 % $delitel02; do {$delenec01 -= 1;} while($zbytek>0); echo $delenec01; echo ":"; echo $delitel02; echo "="; ?> Ale zahlásí to toto: Fatal error: Maximum execution time of 30 seconds exceeded in c:apachehtdocsmatematikadel_mala_5.php on line 33 Asi to fakt jede do nekonečna. Jak to zastavit? |
||
pavel prochazka.zde.cz Profil * |
#10 · Zasláno: 11. 4. 2007, 19:18:33
M**
cely postup je spatny, kdy takovy kod napisas v jakemkoliv jazyce, tak bude neumerne zatezovat processor. Proto pouzij jiny postup, zdel k cemu potrebujes takova cisla, mozna se najde jiny zpusob jak toho docilit... kdyz se divam na tvuj akgoritmus, proc pouzivas deleni na hledani? proc nepouzijes nasobeni? kde uz mas delenec a delenec znam... Jen je vynasobis a pripadne prictes nejaky zbytek pokud pozadujes... A je to bez cyklu.... Nikdo nemusi vedet ze ty cisla nasobis, proste upravis postup jak se k zadane informaci dostat... Neni lepsi dve cisla vynasobit? a mas zajistevo ze vysledek je delitelnim kteremkoliv cislem cos nasobil... |
||
M** Profil * |
#11 · Zasláno: 12. 4. 2007, 17:04:03
IMHO lepší řešení by bylo určit $delitel02, a další číslo, vzájemně je vynásobit a tím se získá $delenec01
použiji přeci jen tento postup. $delenec01 = $delitel02 * $vysledek0; $delitel02 = Rand (1,5); $vysledek0 = Rand (1,10); a je to vyřešeno. pokaždé to vyhodí jiná čísla. |
||
M** Profil * |
#12 · Zasláno: 12. 4. 2007, 17:52:01
Už to je:
<? $delitel02 = Rand (1,5); $vysledek0 = Rand (1,10); $delenec01 = $delitel02*$vysledek0; echo $delenec01; echo " : "; echo $delitel02; echo " = "; ?> |
||
Časová prodleva: 17 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0