Skocz do zawartości

r   e   k   l   a   m   a

Zdjęcie

[PHP]Obliczanie sredniej wazonej


  • Zaloguj się, aby dodać odpowiedź
3 odpowiedzi w tym temacie

#1 alek37

alek37
  • Użytkownicy
  • 6 postów

Napisano 25.08.2012 - 21:21

Witam
Mam taki oto kod do obliczania sredniej wazonej ale nie moge odnalezc przyczyny z powodu ktorej on nie dziala. Czy moge prosic kogos o pomoc przy wskazaniu bledow.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
 
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Kalkulator średniej ważonej.</title>
</head>
 
<body>
<table width=100%><tr><td align=center>
<table width=400><tr><td align = center><font  size=4><b>Kalkulator średniej ważonej </b></font></td></tr><tr><td align=center><font size=3>Poniższy skrypt ma na celu ułatwienie obliczania średniej ważonej. .<b> UWAGA! OCENY ROZDZIELAMY PRZECINKIEM A LICZBY DZIESIĘTNE KROPKĄ (np 1.70 czyli '2-')!</b></font>
 
</font></td></tr></table>

<table>
<form action="index.php" method="POST">
 
<tr><td>Oceny wagi '5':</td><td><input type="text" name="waga5" size="25" /></td></tr>
<tr><td>Oceny wagi '4':</td><td><input type="text" name="waga4" size="25" /></td></tr>
<tr><td>Oceny wagi '3':</td><td><input type="text" name="waga3" size="25" /></td></tr>
<tr><td>Oceny wagi '2':</td><td><input type="text" name="waga2" size="25" /></td></tr>
<tr><td>Oceny wagi '1':</td><td><input type="text" name="waga1" size="25" /></td></tr>
<tr><td>Oceny wagi '0'*:</td><td><input type="text" name="waga0" size="25" /></td></tr>
 
</table>
<input type="submit" value="Oblicz średnią ważoną" /></br></br>
 
</form>
<p>*Waga '0' występuje w przypadku wybranych przedmiotów, jest to tak zwana "1!".</p>
</td></tr></table>
<?php
 
$licznik = 0;
$dzielnik = 0;
 
$waga5 = explode(",",$_POST[waga5]);
$waga4 = explode(",",$_POST[waga4]);
$waga3 = explode(",",$_POST[waga3]);
$waga2 = explode(",",$_POST[waga2]);
$waga1 = explode(",",$_POST[waga1]);
$waga0 = explode(",",$_POST[waga0]);
 
for($i=0;$waga5[$i]!="";$i++)
{
$licznik = $licznik + $waga5[$i]*5;
$dzielnik = $dzielnik + 5;
}
 
for($i=0;$waga4[$i]!="";$i++)
{
$licznik = $licznik + $waga4[$i]*4;
$dzielnik = $dzielnik + 4;
}
 
for($i=0;$waga3[$i]!="";$i++)
{
$licznik = $licznik + $waga3[$i]*3;
$dzielnik = $dzielnik + 3;
}
 
for($i=0;$waga2[$i]!="";$i++)
{
$licznik = $licznik + $waga2[$i]*2;
$dzielnik = $dzielnik + 2;
}
 
for($i=0;$waga1[$i]!="";$i++)
{
$licznik = $licznik + $waga1[$i]*1;
$dzielnik = $dzielnik + 1;
}
 
for($i=0;$waga0[$i]!="";$i++)
{
$dzielnik = $dzielnik + 1;
}
if ($dzielnik==0){
$srednia = "WPISZ DANE!";
}
else
{
$srednia = $licznik/$dzielnik;
}
if($srednia > 0){
if($srednia>0 && $srednia<=1.75){$ocena = "<font color=blue>niedostateczny</font>";}
elseif($srednia >1.75 && $srednia <= 2.5){$ocena = "<font color=blue>dopuszczający</font>";}
elseif($srednia >2.5 && $srednia <= 3.5){$ocena = "<font color=blue>dostateczny</font>";}
elseif($srednia >3.5 && $srednia <= 4.5){$ocena = "<font color=blue>dobry</font>";}
elseif($srednia >4.5 && $srednia <= 5.25){$ocena = "<font color=blue>bardzo dobry</font>";}
elseif($srednia >5.25 && $srednia <= 6){$ocena = "<font color=blue>celujący</font>";}
elseif($srednia >5.25 && $srednia <= 6){$ocena = "<font color=blue>celujący</font>";}
elseif($srednia >6){$ocena = "<font color=pink>Bardzo śmieszne, hłe, hłe, hłe... >:]</font>";}
}
else
{
$ocena = "WPISZ DANE!";
}
?>
<table width=100%>
<tr>
<td align=center>
<table><tr><td align=center><b>ŚREDNIA: </b><font color=red>$srednia</font></td></tr></td></tr><tr><td align=center><b>OCENA: </b>$ocena</td></tr></table></table>"
</body>
</html>


#2 grzelix

grzelix
  • Użytkownicy
  • 839 postów

Napisano 25.08.2012 - 21:34

Poniżej dwa fragmenty które wymagają poprawki (już poprawione)
$waga5 = explode(",",$_POST['waga5']);
$waga4 = explode(",",$_POST['waga4']);
$waga3 = explode(",",$_POST['waga3']);
$waga2 = explode(",",$_POST['waga2']);
$waga1 = explode(",",$_POST['waga1']);
$waga0 = explode(",",$_POST['waga0']);
<table><tr><td align=center><b>ŚREDNIA: </b><font color=red><?php echo $srednia ?></font></td></tr></td></tr><tr><td align=center><b>OCENA: </b><?php echo $ocena ?></td></tr></table></table>

Słyszałeś o funkcjach? Ten skrypt (część php) można skrócić gdzieś o 75% używając funkcji.
\\ When I wrote this, only God and I understood what I was doing
\\ Now, God only knows

#3 alek37

alek37
  • Użytkownicy
  • 6 postów

Napisano 25.08.2012 - 23:33

Wielkie dzieki za poprawki. Nareszcie dziala, juz sobie sprawdzilem. Z funkcjami nie stoje zbyt dobrze. Ta metoda moze i jest troche na okolo ale dziala (teraz nareszcie)

#4 budda86

budda86
  • Użytkownicy
  • 48 postów

Napisano 26.08.2012 - 15:22

A jak będziesz potrzebował policzyć średnią z 7 liczb, to dopiszesz kolejną zmienną $waga6 = explode(",",$_POST['waga6']); ? A jak będziesz potrzebował średniej ze 100 liczb, to też? Wyjątkowo brzydki styl programowania, wyjątkowo nieelastyczny i trudny do późniejszej modyfikacji.
Real stupidity beats artificial intelligence every time