opdrachtje..... ik kijg het niet voor elkaar!
Misschien dat jullie mij een eindje op weg kunnen helpen!
Ik heb al gegoogeld maar nog niet gevonden dat mij verder hielp
het opdrachtje:
maak een php script die een array met willekeurige getallen op de juiste volgorde zet. Doe dit zo efficiënt mogelijk.
Ik begrijp dat dit met een while loopje moet maar daar houdt het mee op.
Ik hoor het graag,
Geert van der Heide
ja oke maar dat mocht ik niet doen ha ha ha, dit om php onder de knie te krijgen!
als je een leuke beginopdracht wil:
Maak een tabel 5x5, met daarin 1tm5 in de 1e kolom, 6tm10 in de 2e
a tm e in de 3e. kleurtjes in de 4e en de som van 1e en 2e kolom in de 5e kolom
makkie toch!
foreach($randomarray as $getal)
{
$temparray[$getal] = $getal;
}
foreach($temparray as $getal)
{
$nieuwearray[] = $getal
}
Gokje, geen idee of het werkt want normaal gebruik je gewoon een sorteerfunctie.
Jouw opdrachtje is ook niet misselijk trouwens ik richt me eerst maar even op die andere
als je de syntax een beetje onder de knie wil krijgen kan je dan niet beter beginnen met wat simpels? contact formuliertje, abc formule, rekenmachine dat soort dingen?
Overigens, deze methode werkt alleen met hele getallen.
Gewijzigd op 01/01/1970 01:00:00 door RT
werkt niet
misschien moet je tog eens kijken naar sort() daar zijn die functies toch voor gebouwd, om het even makkelijker te maken zeg maar :P.
- Loop door de array heen op zoek naar de laagste waarde. (bijvoorbeeld door een 'variabele' bij te houden die wijst naar de index van de laagste waarde).
- Na het laatste item in de array te hebben bekeken, plaats je de gevonden laagste waarde op de 1e index van je 'resultaat-array'.
- 'Wis' de waarde uit de array
- Herhaal de procedure tot alle items uit de originele array zijn gewist.
Retourneer de 'resultaat-array'
(al hoef je daar misschien niet naar toe..)
Dat is het idee !!
En dan heb je nog wat leuk puzzelwerk om het te coderen !
Gewijzigd op 01/01/1970 01:00:00 door - Roland -
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
$getallen = array(1,2,3,4,5,6,7,8,9,0);
$sort = array();
$totaal = count($getallen);
for($i=1; $i<=$totaal; $i++)
{
$getal = min($getallen);
array_push($sort,$getal);
$key = array_search($getal,$getallen);
array_splice($getallen,$key);
}
echo'<pre>';
print_r($sort);
echo'</pre>';
?>
$getallen = array(1,2,3,4,5,6,7,8,9,0);
$sort = array();
$totaal = count($getallen);
for($i=1; $i<=$totaal; $i++)
{
$getal = min($getallen);
array_push($sort,$getal);
$key = array_search($getal,$getallen);
array_splice($getallen,$key);
}
echo'<pre>';
print_r($sort);
echo'</pre>';
?>
Gewijzigd op 01/01/1970 01:00:00 door Gerben G
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
# We maken een array gevuld met cijfers van 0 tot en met 999
$array = range ( 0 , 999 );
# Om te zien wat dit oplevert kun je dit doen:
print_r ( $array );
# Nu is het wel een array, alleen niet willekeurig.
# We gaan dus de elementjes door elkaar gooien
shuffle ( $array );
# Om te zien wat dit oplevert kun je dit doen:
print_r ( $array );
# Dat is deel 1 van de opdracht: een array met willekeurige getallen
# Nu moet hij op volgorde worden gezet:
sort ( $array );
# Om te zien wat dit oplevert kun je dit doen:
print_r ( $array );
# Klaar
?>
# We maken een array gevuld met cijfers van 0 tot en met 999
$array = range ( 0 , 999 );
# Om te zien wat dit oplevert kun je dit doen:
print_r ( $array );
# Nu is het wel een array, alleen niet willekeurig.
# We gaan dus de elementjes door elkaar gooien
shuffle ( $array );
# Om te zien wat dit oplevert kun je dit doen:
print_r ( $array );
# Dat is deel 1 van de opdracht: een array met willekeurige getallen
# Nu moet hij op volgorde worden gezet:
sort ( $array );
# Om te zien wat dit oplevert kun je dit doen:
print_r ( $array );
# Klaar
?>
Wat je moet doen is het array met getallen langslopen. Je vergelijkt het 1e getal met het 2e getal, is de 1e hoger dan wissel je ze om anders doe je niets en ga je door naar het 2e en 3e getal, is het 2e hoger dan het 3e dan wissel je ze om en anders doe je weer niets en ga je door naar het 3e en 4e getal enzovoort.
Nadat je het array 1 keer bent doorgelopen op deze manier staat het hoogste getal altijd achteraan. wat voor rij getallen je ook hebt.
Bijvoorbeeld: 7, 9, 2, 3, 1, 5 is na deze loop: 7, 2, 3, 1, 5, 9. (Ik hoop dat ik dit goed heb uit het hoofd). Dit is eigenlijk de loop die je eerst voor elkaar moet krijgen.
Het tweede deel van de oplossing is het herhalen van deze loop. Alleen elke keer als je de loop uitvoert kijk je een getal minder ver. De eerste keer bekijk je dus alle getallen, de tweede keer weer je zeker dat het laatste getal aan het eind staat en voer je de loop dus uit op de lengte van het array-1. Daarna weet je zeker dat de laatste 2 getallen goed staan, in dit geval 7, 9. Zo ga je door. In dit voorbeeld array wordt deze loop dus 5 keer uitgevoerd.
ik zal niet de opdracht verpesten maar de code wordt dus:
$a = array(7, 9, 2, 3, 1, 5);
$i = count($a)-1; //variabele die in de while loop steeds 1 lager wordt zolang $i groter dan 0 is. Deze waarde kan ook gebruikt worden voor het aantal keren uitvoeren van de for loop binnen 1 loop van de while loop.
while () //de while loop is voor het tweede deel van de oplossing
{
for() //1e deel van de oplossing
{
if ( getal 1 is groter dan getal 2)
{
//omwisselen
}
}
}
print_r($a);
foreach gaat voor het eerste deel van de opdracht wel werken maar niet voor het tweede deel. De term foreach zegt het al. Hij loop alle waardes in het array door. Je wilt dit de eerste keer wel maar de tweede keer wil je alle waardes in het array behalve de laatste doorlopen. Daarna alle waardes behalve de laatste 2...
Maar probeer eerst maar deel 1: 7, 9, 2, 3, 1, 5 wordt: 7, 2, 3, 1, 5, 9
succes :)