Zadejte hledaný výraz...

jednoduchý nefunkční kód

Dobrý den,
jsem úplný začátečník v php a vlastně i v programování. Dneska jsem si napsal skriptík, ale hlásí mi ty chybky a už fakt nevim, kde jsou... :(
Pro někoho z Vás to může být jednoduchý problém, tak prosím poraďtě...
$kod_cislo = 475;
$druhe_mocniny = array ("1","2","4","8","16","32","64","128","512");
$pom1=$druhe_mocniny;
for ($i=8; $i != 0; --$i) /* problém s pozdějším definováním $pom1 - nutno vyřešit.
Tento cyklus for s vnořeným if projíždí pole $druhe_mocniny a testuje podmínku, zda uživatelem vložené číslo je větší než konkrétní druhá mocnina */
{
if ($kod_cislo > $druhe_mocniny)
{
$pom1 = $druhe_mocniny;
break;
}}
$vysledek[] = "Výsledné číslo ve dvojkové soustavě je: ";
while ($kod_cislo != 0)
{
$pom2 = $kod_cislo % $druhe_mocniny;
if ($pom2 >= $druhe_mocniny)
{
$vysledek[] = "1";
$kod_cislo = $kod_cislo - $druhe_mocniny;
$i = $i - 1;
}
else
{
$vysledek[] = "0";
$kod_cislo = $kod_cislo - $druhe_mocniny;
$i = $i - 1;
}}
foreach ($vysledek as $hodnota)
{
echo "$hodnota ";
}
?>
Tent kód by měl převádět čísla menší 1024 do dvojkové soustavy...
22. 7. 2010 22:17:46
https://webtrh.cz/diskuse/jednoduchy-nefunkcni-kod#reply531286
Zkuste
$binarni = decbin($desitkova);
http://cz.php.net/manual/en/function.decbin.php
22. 7. 2010 23:03:52
https://webtrh.cz/diskuse/jednoduchy-nefunkcni-kod#reply531285
Kamil Tomšík
verified
rating uzivatele
(3 hodnocení)
22. 7. 2010 23:20:26
presne tak:
$kod_cislo = 475;
$binarni = ($kod_cislo < 1024)
?decbin ( $kod_cislo )
:$kod_cislo;
echo $binarni;
otazkou je, proc prevadet jenom cisla mensi 1024 :-)
22. 7. 2010 23:20:26
https://webtrh.cz/diskuse/jednoduchy-nefunkcni-kod#reply531284
Děkuju za vaše rady. Vim, že k tomu existují funkce, ale já to chtěl vymyslet nějak algoritmicky...
Je to zřejmě nějaký zacyklený.
Notice: Undefined offset: -1 in c:inet_srvhttpdoc_rootdvojkova_soustava_2.php on line 16
Notice: Undefined offset: -1 in c:inet_srvhttpdoc_rootdvojkova_soustava_2.php on line 17
Notice: Undefined offset: -1 in c:inet_srvhttpdoc_rootdvojkova_soustava_2.php on line 20
a to se vypisuje pořád dokola
22. 7. 2010 23:34:39
https://webtrh.cz/diskuse/jednoduchy-nefunkcni-kod#reply531283
Kamil Tomšík
verified
rating uzivatele
(3 hodnocení)
22. 7. 2010 23:41:49
tak nic nevymyslej - nativni fce je vzdycky rychlejsi - jestli potrebujes algoritmus jako domaci ukol, tak se podivej do zdrojaku php :-)
22. 7. 2010 23:41:49
https://webtrh.cz/diskuse/jednoduchy-nefunkcni-kod#reply531282
Martin Klíma
verified
rating uzivatele
(13 hodnocení)
22. 7. 2010 23:51:36
Kapku jsem se nudil tak tady máš :)
$cislo = 498; // počáteční číslo
// cyklus
while ($cislo >= 1) {
$zbytek = $cislo % 2; // zbytek po dělení 1,0
$cislo = $cislo / 2; // celočíselné dělení
$result[] = $zbytek; // uložení zbytku
}
// převrácení pole
for ($j = count($result) - 1; $j > -1; $j--) {
$reverse_result[] = $result; // převrácení do jiného pole.
}
foreach ($reverse_result as $value) {
echo $value;
}
?>
22. 7. 2010 23:51:36
https://webtrh.cz/diskuse/jednoduchy-nefunkcni-kod#reply531281
Gecko
verified
rating uzivatele
(12 hodnocení)
22. 7. 2010 23:56:58
Neriešil som nejak funkčnosť scriptu ale prvé čo mi do očí udrelo bola definícia pola s číslami . .
Ak chceš prvky poľa využívať ako číselné hodnoty nesmieš ich ohraničovať úvodzovkami, inak figurujú ako string.
Takže tvoje pole by malo vyzerať cca takto:
$druhe_mocniny = array(1, 2, 4, 8, 16, 32, 64 . . . atď :-)
22. 7. 2010 23:56:58
https://webtrh.cz/diskuse/jednoduchy-nefunkcni-kod#reply531280
Martin Klíma
verified
rating uzivatele
(13 hodnocení)
22. 7. 2010 23:59:43
Napsal Gecko;541870
Neriešil som nejak funkčnosť scriptu ale prvé čo mi do očí udrelo bola definícia pola s číslami . .
Ak chceš prvky poľa využívať ako číselné hodnoty nesmieš ich ohraničovať úvodzovkami, inak figurujú ako string.
Takže tvoje pole by malo vyzerať cca takto:
$druhe_mocniny = array(1, 2, 4, 8, 16, 32, 64 . . . atď :-)
V PHP nemusí :)
22. 7. 2010 23:59:43
https://webtrh.cz/diskuse/jednoduchy-nefunkcni-kod#reply531279
Kamil Tomšík
verified
rating uzivatele
(3 hodnocení)
23. 7. 2010 11:21:12
Napsal Pooky;541873
V PHP nemusí :)
neodpustim si to - to ze to funguje, neznamena, ze je to spravne - pole retezcu je pole retezcu, dokud s jeho prvkem neprovedes neco, co ten typ zmeni - napriklad nejakou aritmetickou operaci - takze mas pravdu jenom castecne...
23. 7. 2010 11:21:12
https://webtrh.cz/diskuse/jednoduchy-nefunkcni-kod#reply531278
Martin Klíma
verified
rating uzivatele
(13 hodnocení)
23. 7. 2010 11:48:14
Napsal vedouci;542032
neodpustim si to - to ze to funguje, neznamena, ze je to spravne - pole retezcu je pole retezcu, dokud s jeho prvkem neprovedes neco, co ten typ zmeni - napriklad nejakou aritmetickou operaci - takze mas pravdu jenom castecne...
Pokud PHP zvládne proměnné přetypovat tak proč by se to nemohlo používat? Je na každém k jakému účelu ale to už není věc PHP ale nějakých programovacích zvyklostí.
23. 7. 2010 11:48:14
https://webtrh.cz/diskuse/jednoduchy-nefunkcni-kod#reply531277
Kamil Tomšík
verified
rating uzivatele
(3 hodnocení)
23. 7. 2010 12:03:17
ja ti to nezakazuju, jenom rikam, ze to neni spravne
23. 7. 2010 12:03:17
https://webtrh.cz/diskuse/jednoduchy-nefunkcni-kod#reply531276
To o těch číslech je pravda. Já je měl původně bez těch uvozovek. Jen z prostého zoufalství jsem zkoušel kraviny :D...
$kod_cislo = 475;
$druhe_mocniny = array (1,2,4,8,16,32,64,128,512);
$pom1=$druhe_mocniny;
for ($i=8; $i != 0; --$i) /* cyklus for s vnořeným if projíždí pole $druhe_mocniny a testuje podmínku, zda uživatelem vložené číslo je větší než konkrétní druhá mocnina */
{
if ($kod_cislo > $druhe_mocniny)
{
$pom1 = $druhe_mocniny;
break;
}}
$pocet = $i;
echo "$druhe_mocniny"; /* toto tu je jen z důvodu ověření funkčnosti */
$vysledek = array(); /* neustále mi to píše, že není definovaná proměnná, tak jsem sem dal toto. Ale já vim, že v php se nemusí proměnná nijak deklarovat */
while ($kod_cislo != 0)
{
$mocnina = $druhe_mocniny;
$pom2 = $kod_cislo % $mocnina;
if ($pom2 >= $mocnina)
{
$vysledek[] = 1;
$kod_cislo = $kod_cislo - $mocnina;
$pocet = --$pocet;
}
else
{
$vysledek[] = 0;
$kod_cislo = $kod_cislo - $mocnina;
$pocet = --$pocet;
}}
foreach ($vysledek as $hodnota)
{
echo "$hodnota ";
}
?>
Trochu jsme to předělal. Teď to vypisuje tohle:
Notice: Undefined offset: -1 in c:inet_srvhttpdoc_rootdvojkova_soustava_2.php on line 18
Notice: Undefined offset: -2 in c:inet_srvhttpdoc_rootdvojkova_soustava_2.php on line 18
Notice: Undefined offset: -3 in c:inet_srvhttpdoc_rootdvojkova_soustava_2.php on line 18
a furt dokola -4, -5 až do nekonečna... Absolutně ale nechápu proč...
23. 7. 2010 13:13:07
https://webtrh.cz/diskuse/jednoduchy-nefunkcni-kod#reply531275
Martin Klíma
verified
rating uzivatele
(13 hodnocení)
23. 7. 2010 13:21:51
Napsal MartinBen;542111
To o těch číslech je pravda. Já je měl původně bez těch uvozovek. Jen z prostého zoufalství jsem zkoušel kraviny :D...
$kod_cislo = 475;
$druhe_mocniny = array (1,2,4,8,16,32,64,128,512);
$pom1=$druhe_mocniny;
for ($i=8; $i != 0; --$i) /* cyklus for s vnořeným if projíždí pole $druhe_mocniny a testuje podmínku, zda uživatelem vložené číslo je větší než konkrétní druhá mocnina */
{
if ($kod_cislo > $druhe_mocniny)
{
$pom1 = $druhe_mocniny;
break;
}}
$pocet = $i;
echo "$druhe_mocniny"; /* toto tu je jen z důvodu ověření funkčnosti */
$vysledek = array(); /* neustále mi to píše, že není definovaná proměnná, tak jsem sem dal toto. Ale já vim, že v php se nemusí proměnná nijak deklarovat */
while ($kod_cislo != 0)
{
$mocnina = $druhe_mocniny;
$pom2 = $kod_cislo % $mocnina;
if ($pom2 >= $mocnina)
{
$vysledek[] = 1;
$kod_cislo = $kod_cislo - $mocnina;
$pocet = --$pocet;
}
else
{
$vysledek[] = 0;
$kod_cislo = $kod_cislo - $mocnina;
$pocet = --$pocet;
}}
foreach ($vysledek as $hodnota)
{
echo "$hodnota ";
}
?>
Trochu jsme to předělal. Teď to vypisuje tohle:
Notice: Undefined offset: -1 in c:inet_srvhttpdoc_rootdvojkova_soustava_2.php on line 18
Notice: Undefined offset: -2 in c:inet_srvhttpdoc_rootdvojkova_soustava_2.php on line 18
Notice: Undefined offset: -3 in c:inet_srvhttpdoc_rootdvojkova_soustava_2.php on line 18
a furt dokola -4, -5 až do nekonečna... Absolutně ale nechápu proč...
Protože na to jdeš úplně blbě, proč vůbec máš ty druhé mocniny? K čemu ti jsou?
23. 7. 2010 13:21:51
https://webtrh.cz/diskuse/jednoduchy-nefunkcni-kod#reply531274
Ty druhý mocniny vyplývají z toho, jak si to počítam v hlavě. Máš daný číslo x a od něj odešteš největší možnou druhou mocninu a tohle číslo (tu největší druhou mocninu), musim nějakym způsobem zjistit. To je ten cyklus for.
23. 7. 2010 14:46:10
https://webtrh.cz/diskuse/jednoduchy-nefunkcni-kod#reply531273
Martin Klíma
verified
rating uzivatele
(13 hodnocení)
23. 7. 2010 14:52:54
Napsal MartinBen;542165
Ty druhý mocniny vyplývají z toho, jak si to počítam v hlavě. Máš daný číslo x a od něj odešteš největší možnou druhou mocninu a tohle číslo (tu největší druhou mocninu), musim nějakym způsobem zjistit. To je ten cyklus for.
Ale k čemu ti to je? Převod čísla na 2 soustavu se dělá pomocí dělení dvěma. Pouze zapisuješ kolik ti zůstane, buď 1 a nebo 0. Četl jsi ten kod co jsem sem hodil?
23. 7. 2010 14:52:54
https://webtrh.cz/diskuse/jednoduchy-nefunkcni-kod#reply531272
Pro odpověď se přihlašte.
Přihlásit