| 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: 13 let
|
|||
0