nepz Skrevet 11. oktober 2012 Skrevet 11. oktober 2012 Hallo! Denne koden skal vise 51, men skrives ut som 45. Er det noen som ser om det mangler noe? Den viser riktig når jeg prøver f.eks 2+3+4 = 9. Oppgaven lyder som følger:Returnere summen av elementene i lista. Greit å vite om jeg gjør det riktig, som jeg mener at jeg gjør. Mulig jeg mangler noe simpelt. function sum ($tall1,$tall2,$tall3,$tall4,$tall5,$tall6,$tall7,$tall8,$tall9,$tall10) { $resultat = $tall1+$tall2+$tall3+$tall4+$tall5+$tall6+$tall7+$tall8+$tall9+$tall10; echo $resultat; } sum (1,4,8,1,4,10,5,6,2,4,6); function sum1($tall1,$tall2,$tall3,$tall4,$tall5,$tall6,$tall7,$tall8,$tall9,$tall10=0) { $resultat = $tall1+$tall2+$tall3+$tall4+$tall5+$tall6+$tall7+$tall8+$tall9+$tall10; return $resultat; }
Persn Skrevet 11. oktober 2012 Skrevet 11. oktober 2012 function sum1($tall1,$tall2,$tall3,$tall4,$tall5,$tall6,$tall7,$tall8,$tall9,$tall10=0) { $resultat = $tall1+$tall2+$tall3+$tall4+$tall5+$tall6+$tall7+$tall8+$tall9+$tall10; return $resultat; } [/code] Nå er ikke jeg kjempegodt kjent med PHP og dens syntaks, men blir ikke $tall10=0 litt feil? Hvis det siste tallet 6 ikke er skrevet riktig så forklarer det hvorfor du får 45.
jonny Skrevet 11. oktober 2012 Skrevet 11. oktober 2012 (endret) sum-kallet ditt inneholder 11 argumenter, men funksjonen sum benytter bare de 10 første. 45 + 6 = 51. Hva sum1 gjør der må du spørre deg selv om. Endret 11. oktober 2012 av jonny 1
nepz Skrevet 11. oktober 2012 Forfatter Skrevet 11. oktober 2012 Så lett er det å overse enkle ting gitt. Jeg får feilmelding om jeg endre sum1 til sum, fordi den allerede har blitt declared Takk forresten :-)
Olavxxx Skrevet 11. oktober 2012 Skrevet 11. oktober 2012 Hei, Er du sikker på at oppgaven ikke vil du skal bruke en matrise/array og summere elementene? Om du skal lage en så dårlig funksjon som det der, er fremdeles problemet at funksjonen din tar i mot 10 parametre og du sender 11. Det siste tallet ditt (parameter 11) er 6 (Som Jonny påpeker) function sum ($tall1,$tall2,$tall3,$tall4,$tall5,$tall6,$tall7,$tall8,$tall9,$tall10,$tall11) { $resultat = $tall1+$tall2+$tall3+$tall4+$tall5+$tall6+$tall7+$tall8+$tall9+$tall10+$tall11; echo $resultat; } sum (1,4,8,1,4,10,5,6,2,4,6);
molty Skrevet 12. oktober 2012 Skrevet 12. oktober 2012 Vil anbefale å se på func_get_args funksjonen i php Så kan du kjøre en kombinasjon av func_get_args og foreach. Du får en mye lettere kode da
nepz Skrevet 12. oktober 2012 Forfatter Skrevet 12. oktober 2012 $tallrekke=array(1,4,8,1,4,10,5,6,2,4,6); function returnerSum($tallrekke) { $sum=0; for($i=0;$i<count($tallrekke);$i++) { $sum+=$tallrekke[$i]; return $sum; } } echo returnerSum($tallrekke); Brukte denne jeg ;-)
slacky Skrevet 12. oktober 2012 Skrevet 12. oktober 2012 (endret) $tallrekke=array(1,4,8,1,4,10,5,6,2,4,6); function returnerSum($tallrekke) { $sum=0; for($i=0;$i<count($tallrekke);$i++) { $sum+=$tallrekke[$i]; return $sum; } } echo returnerSum($tallrekke); Brukte denne jeg ;-) Return-statement skal ikke være i loopen (du returnerer første verdi). Forresten så er dette enda en situasjon hvor foreach passer bedre. function sum($arr) { $sum=0; foreach($arr as $number) $sum+=$number; return $sum; } $arr=array(3,73,65,23,9); echo sum($arr); Endret 12. oktober 2012 av warpie
Milktea Skrevet 13. oktober 2012 Skrevet 13. oktober 2012 Eller enda enklere: function sumArgs() { return array_sum( func_get_args() ); } echo sumArgs( 1, 4, 8, 1, 4, 10, 5, 6, 2, 4, 6 ); Hvis man først skal ha summen av elementene i en tabell er det best å bruke array_sum, som faktisk er innebygd. 2
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå