Autor | Zpráva | ||
---|---|---|---|
Pavel_15 Profil |
#1 · Zasláno: 18. 10. 2013, 08:58:37
Zdravím, chtěl bych požádat o pomoc, nevím si rady s tímto úkolem.
Napište funkci pokus($pole), která bude vracet pole indexů rovnováhy. Index rovnováhy je index, pro který platí, že součet všech prvků pole s menším indexem je roven sumě všech prvku pole s větším indexem. Tedy např. pokud $pole bude mít prvky [-7, 1, 5, 2, -4, 3, 0], pak jsou indexy rovnováhy 3 a 6. Pro 3 totiž platí, že -7 + 1 + 5 = -4 + 3 + 0. Pro 6 platí -7 + 1 + 5 + 2 -4 + 3 = 0. Ale 7 není index rovnováhy, protože pole nemá prvek, který by měl index 7. V přídě neexistujícího indexu rovnováhy nebo chyby vracejte prázdné pole. Zkoušel jsem to už několika způsoby a furt nic. Děkuji za jakoukoliv nápovědu |
||
juriad Profil |
#2 · Zasláno: 18. 10. 2013, 09:18:59
Nikdo tady za tebe úkol nevyřeší. Ukaž kód svých pokusů, třeba objevíme, v čem děláš chyby.
|
||
Pavel_15 Profil |
#3 · Zasláno: 18. 10. 2013, 09:41:01
Mám toto jako zatím přijatelný začatek, jen nevím jak sčítat podle indexů polí:
Code: function pokus($pole, $index) { $delka_pole = strlen($pole); for($i=0; $i < $delka_pole; $i++) { $hodnota[] = substr($pole,$i,1); } for($k=0; $k < $index; $k++) { $hodnota_plus = substr($pole,$k,1); echo $hodnota_plus += $hodnota_plus; } } pokus('-7152-430','3'); |
||
Joker Profil |
#4 · Zasláno: 18. 10. 2013, 11:14:20
Pavel_15:
Aj aj. Tak pro začátek zadání mluví o polích a ne o řetězcích, takže by bylo fajn pracovat s poli a ne s řetězci. |
||
Alphard Profil |
Kolegové dneska nemají dobrou náladu :-) Chápu, že když člověk postrádá základní znalosti (ať již z jakéhokoliv důvodu), může být u navazujících věcí mírně znechucen a pak to radši od někoho zkopírovat a ani nečíst...
Dám vám sem trochu jiný kód. Vrací pole indexů nejvyšších prvků v poli. Základ je podobný, lze z toho docela dobře vyjít. Ať se daří. function keys_max(array $in) { $maxValue = 0; // uvažuji nezáporná čísla $out = array(); foreach ($in as $key => $value) { if ($value == $maxValue) { $out[] = $key; } elseif ($value > $maxValue) { $out = array($key); $maxValue = $value; } } return $out; } print_r(keys_max(array(8, 5, 6, 11, 12, 8, 7, 0, 5, 12, 12, 3))); |
||
juriad Profil |
#6 · Zasláno: 18. 10. 2013, 15:01:44
Nabízím trošku odlišnou návodnou úlohu než Alphard. To se nedělá, takhle předbíhat ;)
Pro každý prvek vypíše všechny prvky, které jsou před ním, a všechny, které jsou za ním. Z našich dvou ukázek už snad dokážeš řešení dát dohromady. <?php function balanced(array $values) { $cnt = count($values); for($i = 0; $i < $cnt; $i++) { echo "### index = " . $i . " ###\n"; echo "before: \n"; for($j = 0; $j < $i; $j++) { echo $values[$j] . "\n"; } echo "current: " . $values[$i] . "\n"; echo "after: \n"; for($j = $i+1; $j<$cnt; $j++) { echo $values[$j] . "\n"; } } } balanced([-7, 1, 5, 2, -4, 3, 0]); |
||
Časová prodleva: 10 let
|
0