Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Średnia arytmetyczna
Forum PHP.pl > Forum > Przedszkole
tomsi
Mam plik plik.txt w którym mam zapisane liczzby (2,3,5,6,7,9,10,11,13,14) i teraz jak policzyć z nich średnią arytmetyczną, ale tylko tych liczb, które są mniejsze od 10?
Kombinowałem coś z tablicami, że liczby te wpisałem do tablicy i przy pomocy:
$srednia = array_sum($tablica) / count($tablica);
chciałem obliczyć.
phpion
  1. <?php
  2. // ciag wszystkich liczb
  3. $liczby = '2,3,5,6,7,9,10,11,13,14';
  4. // podzial ciagu na tablice (jako separator przecinek)
  5. $expl = explode(',', $liczby);
  6.  
  7. // wyzerowanie zmiennych
  8. $suma = 0;
  9. $liczb = 0;
  10.  
  11. // petla przez wszystkie elementy tablicy
  12. for ($i=0, $count=count($expl); $i<$count; $i++) {
  13. // jesli aktualny element jest mniejszy od 10
  14. if ((int)$expl[$i] < 10) {
  15. // dopisz go do sumy
  16. $suma += (int)$expl[$i];
  17. // i zwieksz liczbe liczb ;) o jeden
  18. $liczb++;
  19. }
  20. }
  21.  
  22. // jesli ilosc liczb jest wieksza od 0
  23. if ($liczb > 0) {
  24. // wyswietl srednia
  25. echo 'Srednia: '.($suma/$liczb);
  26. }
  27. // w przeciwnym wypadku (czyli gdy nie ma zadnej mniejszej od 10)
  28. else {
  29. // wyswietl komunikat o dzieleniu przez 0
  30. echo 'Dzielenie przez 0';
  31. }
  32. ?>
Jarod
W jaki sposób podane są te liczby w pliku?
Jeśli w takim jak podałeś łącznie z nawiasami to wczytaj zawartość pliku, obetnij nawiasy - funckja substr(), zastosuje funkcję explode() i pętlą foreach dodawaj do siebie tylko te, które są mniejsze od 10. A później podziel przez ich ilość.

edit: phpion.com mnie uprzedził winksmiley.jpg
phpion
Cytat(Jarod @ 25.11.2007, 23:58:51 ) *
edit: phpion.com mnie uprzedził winksmiley.jpg

cool.gif
tomsi
Cytat(phpion.com @ 25.11.2007, 21:58:39 ) *
  1. <?php
  2. $liczby = '2,3,5,6,7,9,10,11,13,14';
  3. $expl = explode(',', $liczby);
  4.  
  5. $suma = 0;
  6. $liczb = 0;
  7.  
  8. for ($i=0, $count=count($expl); $i<$count; $i++) {
  9. if ((int)$expl[$i] < 10) {
  10. $suma += (int)$expl[$i];
  11. $liczb++;
  12. }
  13. }
  14.  
  15. if ($liczb > 0) {
  16. echo 'Srednia: '.($suma/$liczb);
  17. }
  18. else {
  19. echo 'Dzielenie przez 0';
  20. }
  21. ?>


Czy mógłbyś mi opisowo wytłumaczyć FOR'a? A po co jest jeszcze potem IF? Czy po to jakby nie było liczb w pliku?
phpion
W sumie koncepcja Jaroda jest praktycznie identyczna ale niechaj Ci będzie - wyedytuje swój post z kodem i dodam komentarze.
tomsi
Cytat(phpion.com @ 25.11.2007, 22:06:10 ) *
W sumie koncepcja Jaroda jest praktycznie identyczna ale niechaj Ci będzie - wyedytuje swój post z kodem i dodam komentarze.


Super bardzo mi pomogłeś i bardzo czytelnie napisałeś komentarze, że wiem już teraz wszystko :-)
Dzięki i pozdrawiam
dafy
Szukam prostego skryptu, ktory obliczy srednia liczb, ktore uzytkownik wybierze na formularzu (pola radio), wysle do skryptu a on obliczy ich srednia. Liczby w zakresie od 1 do 6.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.