Autor | Zpráva | ||
---|---|---|---|
majo80 Profil * |
#1 · Zasláno: 7. 11. 2010, 20:58:14
Potreboval by som automaticky vytvoriť matematický príklad s týmito podmienkami:
- čísla od 1 do 20 - operácie mínus a plus (náhodne) - počet čísel v príklade náhodný (od 2 do 5) - výsledok príkladu musí byť viac ako nula a menej ako dvadsať - vytvoriť naraz 10 takýchto náhodných príkladov - zobraziť príklad, nie výsledok Ukážka: 1+3+8-5 15+4 12-3+5 4-2+6+8-3 8-7 ...... a pod Je niečo takéto možné? |
||
Darker Profil |
#2 · Zasláno: 7. 11. 2010, 21:03:39
Nic těžkého. Potřebuješ pole a funkci rand().
|
||
majo80 Profil * |
#3 · Zasláno: 7. 11. 2010, 21:27:55
No pre mňa dosť ťažké. Mohol by si mi s tým pomôcť?
|
||
Darker Profil |
#4 · Zasláno: 7. 11. 2010, 21:37:44 · Upravil/a: Darker
Achjo.
if($_GET["priklady"]!=""&&$_GET["priklady"]!=null){ $priklady=array(); for($i=0;$i<10;$i++){ $priklady[$i]=""; $pocet=rand(2,5); for($j=0;$j<$pocet;$j++) { $priklady[$i]=$priklady[$i].rand(1,20); if(rand(0,1)==1&&$j+1<$pocet)$priklady[$i]=$priklady[$i]."+"; else if($j+1<$pocet) $priklady[$i]=$priklady[$i]."-"; } }; echo print_AR($priklady); } |
||
Darker Profil |
#5 · Zasláno: 7. 11. 2010, 21:45:48
K čemu takovou blbinu chceš? Pokud to má být antispam, tak teda potěš vidle...
Ukázka: http://acaci.tk/data.php?priklady=dsa |
||
majo80 Profil * |
#6 · Zasláno: 7. 11. 2010, 22:14:33
Neviem prečo, ale keď skopírujem ten kód na svoju stránku, tak nefunguje a pritom nevypisuje ani žiadnu chybu.
Ešte tam chýba jedna podmienka, aby výsledok, ktorý nastane po spočítaní jednotlivých čísel bol od 0 do 20. Ďakujem veľmi za ochotu. |
||
Darker Profil |
#7 · Zasláno: 7. 11. 2010, 22:33:23
To už si snad zvládneš upravit. Pokud to nefunguje, máš to rozbité.
|
||
_es Profil |
#8 · Zasláno: 7. 11. 2010, 22:41:38
majo80:
Nejde o domácu úlohu z programovania? Ak len opíšeš hotový skript od niekoho iného, tak tá úloha veľmi účel nesplní. |
||
Keeehi Profil |
#9 · Zasláno: 7. 11. 2010, 23:16:31
Darker:
Řekl bych, že právě ty to máš rozbité. 1) Co dělá ten středník na konci toho foru? 2) echo print_AR($priklady); - Jelikož jsi nikde funkci print_AR() nikde nedefinoval, tak co by to asi mělo dělat?
3) Tvůj script nekontroluje podmínku 4. |
||
Darker Profil |
#10 · Zasláno: 8. 11. 2010, 19:59:44 · Upravil/a: Darker
Keeehi:
„1) Co dělá ten středník na konci toho foru?“ Nic, takže ti nemusí dělat starosti. „echo print_AR($priklady);“ To je fakt. Ale je to podobná funkce jako ta, co vypíše pole, akorát přehlednější. Její existence není součástí zadání. „3) Tvůj script nekontroluje podmínku 4.“ To už tu bylo. Řekl bych, že to majo80 vzládne sám. Na podmínku jsem prostě zapoměl. Kdybych to měl rozbité, nefungovalo by to. |
||
Keeehi Profil |
#11 · Zasláno: 8. 11. 2010, 20:32:20 · Upravil/a: Keeehi
Darker:
„Její existence není součástí zadání.“ Ale bez její existence to nefunguje, takže buď bys ji měl doplnit, nebo to přepsat tak, aby tofungovalo i bez ní (tedy print_r($priklady); ).
|
||
Darker Profil |
#12 · Zasláno: 9. 11. 2010, 08:33:23
Keeehi:
Na to mohl přijít i beze mě. _es: „domácu úlohu z programovania“ Asi máš pravdu, ale tím líp pro mě a tím hůř pro něj. |
||
imploder Profil |
#13 · Zasláno: 9. 11. 2010, 10:31:06 · Upravil/a: imploder
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title>náhodné příklady</title> <meta http-equiv="content-type" content="text/html; charset=utf-8"> </head> <body> <?php define('POCET_PRIKLADU', 10); define('MIN_POCET_CISEL', 2); define('MAX_POCET_CISEL', 5); define('MIN_CISLO', 1); define('MAX_CISLO', 20); define('MIN_SOUCET', 0); define('MAX_SOUCET', 20); function vyrob_priklad () { $priklad = array(); $soucet = 0; $pocet_cisel = rand(MIN_POCET_CISEL, MAX_POCET_CISEL); for ($i=0; $i<$pocet_cisel; $i++) { if ($i == 0) { // první číslo $min = MIN_CISLO; // musí být kladné $max = MAX_CISLO; // může být největší, co to jde } else { // další čísla // může být i záporné, ale součet po přičtení nesmí klesnout pod 0 if (($soucet - MIN_SOUCET) < MAX_CISLO) $min = (-1) * ($soucet - MIN_SOUCET); else $min = (-1) * MAX_CISLO; // může být jen tak velké, aby se po přičtení nepřekročil max. součet if ((MAX_SOUCET - $soucet) < MAX_CISLO) $max = MAX_SOUCET - $soucet; else $max = MAX_CISLO; } //echo "min: $min, max: $max <br>"; $cislo = rand($min, $max); $priklad[] = $cislo; $soucet += $cislo; } return $priklad; // pole, kde jsou čísla se znaménky, jak jdou za sebou } function text_prikladu ($priklad) { $text = ""; for ($i=0; isset($priklad[$i]); $i++) { if ($i>0) { if ($priklad[$i] > 0) $text .= '+'; } $text .= $priklad[$i]; } return $text; } for($i=0; $i<POCET_PRIKLADU; $i++) { $p = vyrob_priklad(); //print_r($p); echo " = ". array_sum($p) . "<br>"; echo text_prikladu($p) . "<br>"; } ?> </body> </html> |
||
Časová prodleva: 13 let
|
0