Autor Zpráva
M**
Profil *
Opakování podmínky "IF"
M**
Profil *
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 *
(prostě aby $delenec01 byl dělitelný číslem $delitel02 beze zbytku)
Petr Tichý
Profil
Co použít cyklus for, který se ukončí, když bude zbytek 0? (samozřejmě se uvnitř cyklu bude generovat číslo nové)
Alphard
Profil
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
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 *

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 *
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 *
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 *
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 *
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 *
Už to je:

<?
$delitel02 = Rand (1,5);
$vysledek0 = Rand (1,10);
$delenec01 = $delitel02*$vysledek0;
echo $delenec01; echo " : "; echo $delitel02; echo " = ";
?>
Toto téma je uzamčeno. Odpověď nelze zaslat.