Zadejte hledaný výraz...

Algoritmus v PHP

Jakub Hošek
verified
rating uzivatele
(23 hodnocení)
11. 10. 2011 16:41:49
Zdravím,
rád bych si vytvořil algoritmus, který by vypsal počet násobících kroků daným číslem, aby se dostalo dané číslo .
například mám číslo 8 . Chci vědět, kolikrát musím násobit číslo 2 číslem 2( resp. 2x2x2x2x2x2 atd ), abych dostal číslo 8. V tomto případě to je 2 na 3. , tedy 2x2x2. Lámu si nad tím hlavu již poměrně dlouho, ale nakonec jsem došel k tomu, že dřív než bych to vyřešil, by mi pukla hlava, proto potřebuji nějaké nakopnutí správným směrem :) .
Napad mne cyklus While, no, vyřešil jsem to nějak takhle : ( určitě to nefunguje, když se nad tim zamyslim, vidim že to fungovat nemůže, ale jen chci aby jste viděly, jak si to asi představuju já.
function vypocti () {
$x = 1024 ; // číslo, ke kterému chci zjistit jakým číslem na kolikátou mám násobit a kolikrát
$y = 2 ; // Chci vědět kolikrát musím vynásobit číslo 2 samo sebou abych dostal $x, resp. na kolikátou má být $y(2). $y je tedy číslo, kterým budu násobit na několikátou.
while ($y < $x)
{
$w = $y*2 ; // do $w se později uloží výsledek, resp. odtud budu získávat počet vynásobení ( kolikrát proběh cyklus)
$y = $w ; // nyní chci, aby v Y byla hodnota kroku vypočítaného o řádek výše, a při dalším projetí cyklu už to nebylo 2*2 ale 4*2
}
//zde chci aby se do proměnné( třeba $z) uložil celkový výsledek, tj. koikrát porběh cyklus while, než jsme došli k číslu x . Zde se dozvím kolikrát se udělalo 2x2x2... toho nevím jak doclílit
return $z;
}
echo vypocti () ; //a nakonec chci vypsat číslo
díky moc za rady, u kodu jsou komentáře, aby jste věděli čeho chci dosáhnout :)
11. 10. 2011 16:41:49
https://webtrh.cz/diskuse/algoritmus-v-php#reply686316
Matematika!
log()
11. 10. 2011 16:57:59
https://webtrh.cz/diskuse/algoritmus-v-php#reply686315
Lokiji
verified
rating uzivatele
11. 10. 2011 17:03:06
strilim od boku, ale zkusil bych dva whily v sobe
---------- Post added 11.10.2011 at 20:33 ----------
jo aha, blbe sem to precetl, to bylo zadane to druhe cislo, sem myslel rozklad na soucinitele:-)
11. 10. 2011 17:03:06
https://webtrh.cz/diskuse/algoritmus-v-php#reply686314
Jakub Hošek
verified
rating uzivatele
(23 hodnocení)
11. 10. 2011 17:10:34
Martin Schlemmer
Takže jsem se svou "metodou" úplně vedle ? :)
edit : Z popisu na php.net to moc nechápu, ani z komentářů pod tím... :/ Raději bych to vyřešil pomocí cyklů, polí, atd...
11. 10. 2011 17:10:34
https://webtrh.cz/diskuse/algoritmus-v-php#reply686313
Řešíte něco, co lidé vyřešili v 17. století. Násobení sama sebou je umocňování, jeho opak je logaritmus. A pro výpočet logaritmu už existuje funkce log().
11. 10. 2011 17:13:37
https://webtrh.cz/diskuse/algoritmus-v-php#reply686312
Matus
verified
rating uzivatele
(6 hodnocení)
11. 10. 2011 17:15:31
nie som programátor, tak to berte s rezervou, ale ja by som to urobil nasledovne:
(keby samozrejme neexistovala funkcia log())
function vypocti($a, $b) {
$c = 1;
$a_default = $a;
while($a <= $b) {
$c++;
$a = $a * $a_default;
if($a == $b) {
echo "Cislo ".$b." je vlastne ".$a_default."^".$c;
break;
}
}
if ($a != $b) echo "Cislo ".$b." nedostanes";
}
vypocti(15,225);
+ pridat kontrolu, aby prve cislo nemohlo byt 1
11. 10. 2011 17:15:31
https://webtrh.cz/diskuse/algoritmus-v-php#reply686311
Jan Matoušek
verified
rating uzivatele
(12 hodnocení)
11. 10. 2011 17:15:57
za 1. y můžeš navyšovat takto: y = y* 2;
za 2. vracíš proměnnou z, kterou nikde nedeklaruješ
za 3. nemáš tam ani žádnou podmínku, zda to došlo do zadaného čísla, nebo ho to nepřeskočilo
---------- Příspěvek doplněn 11.10.2011 v 17:21 ----------
to za 3. beru z5
jo a pokud chceš zjistit kolikrát se cyklus provedl, tak jednoduše:
$i=0;
while(){
$i++; //při každém cyklu se zvedne i o 1, stejné jako $i = $i +1;
}
11. 10. 2011 17:15:57
https://webtrh.cz/diskuse/algoritmus-v-php#reply686310
Jakub Hošek
verified
rating uzivatele
(23 hodnocení)
11. 10. 2011 17:23:04
že je to umocnování vým, já chci však zjistit, kolikrát ho musím umocnit, abych dostal určité číslo( v tomto případě kolikrát mám umocnit 2 abych dostal 1024)
Paradiso
1. bude mít pak y po dalším projetí cyklu hodnotu 4? bude se tedy násobit 4*2 nebo opět 2*2?
2. To je naschvál, v komentářích je něco jako " vysledek chci uložit do proměnné z, to je tedy proměnná, kde bude číslo odpovídající počtu umocnění , to ale nevím jak udělat )
3. to by měl ošetřit ten cyklus while, kde je nazačátku pdomínka ne ? ( měl by běhat do tý doby, než bude výsledek násobení stejný jako 1024 )
11. 10. 2011 17:23:04
https://webtrh.cz/diskuse/algoritmus-v-php#reply686309
Jan Matoušek
verified
rating uzivatele
(12 hodnocení)
11. 10. 2011 17:26:55
ano y se navyšuje, zkus nad tím zapřemýšlet, výsledek ti psát nebudu, ale nejsi daleko od cíle
sice existuje log(), ale myslím si, že na naučení myšlení takovýto příklad může být dobrý:-)
11. 10. 2011 17:26:55
https://webtrh.cz/diskuse/algoritmus-v-php#reply686308
Napsal Z3NTIVA;711180
já chci však zjistit, kolikrát ho musím umocnit, abych dostal určité číslo( v tomto případě kolikrát mám umocnit 2 abych dostal 1024)
Kolikrát Přesněji jakým exponentem musím umocnit číslo X, abych dostal číslo Y?
Jinými slovy jaký je logaritmus Y při základu X?
Tady to máte polopatě
http://www.matweb.cz/logaritmy
11. 10. 2011 17:30:05
https://webtrh.cz/diskuse/algoritmus-v-php#reply686307
Jakub Hošek
verified
rating uzivatele
(23 hodnocení)
11. 10. 2011 17:45:42
Paradiso:
Ok, budu premýšlet :)
Martin Schlemmer :
podívám se, chci zjisti, na kolikátou musí být umocněno číslo 2, abych dostal 1024 ( mělo by to být 10, ale chci to zjistit pomocí algoritmu ) ( v tomto případě )
11. 10. 2011 17:45:42
https://webtrh.cz/diskuse/algoritmus-v-php#reply686306
Matus
verified
rating uzivatele
(6 hodnocení)
11. 10. 2011 17:53:32
Z3NTIVA, mozno si prehliadol, ale hore som pridal kod, ktory funguje tak ako pozadujes.
11. 10. 2011 17:53:32
https://webtrh.cz/diskuse/algoritmus-v-php#reply686305
Jakub Hošek
verified
rating uzivatele
(23 hodnocení)
11. 10. 2011 19:09:17
Už jsem to též vyřešil, takhle to funguje :
Jo a abych nezapoměl, všem moc děkuju ;)
11. 10. 2011 19:09:17
https://webtrh.cz/diskuse/algoritmus-v-php#reply686304
hm
verified
rating uzivatele
(20 hodnocení)
11. 10. 2011 19:38:05
zentivo proc tady delas nejake svoje algoritmy kdyz logaritmus o kterem mluvil martin je zakladni matematicka fce a dela presne to co pozadujes? :) Jsi nechodil nebo nehcodis na stredni? (bere se to snad v druhaku) proc delat nejake cykly a ja nevim co :)) samozrejme nasobeni jedno cislo jinym cislem je trochu neco jineho, ale neni to porad vlastne logaritmus? 1(nebo jine cislo) krat Y na X :)
11. 10. 2011 19:38:05
https://webtrh.cz/diskuse/algoritmus-v-php#reply686303
crs
verified
rating uzivatele
(1 hodnocení)
29. 10. 2011 22:12:45
Koukám, řešení Martina Schlemmera si tady vesele ignorujete, a přitom je to správné.
Tipni si, jak dlouho by ti to trvalo vypočítat s použitím logaritmu a jak dlouho s použitím cyklů, kdybys jako vstup měl hausnumero jako třeba 1E+100 apod.
29. 10. 2011 22:12:45
https://webtrh.cz/diskuse/algoritmus-v-php#reply686302
Pro odpověď se přihlašte.
Přihlásit