• 26-10-2010, 20:44:21
    #1
    Üyeliği durduruldu
    Merhaba arkadşalar PHP'den bir ödevim var bana yardımcı olabilirseniz sevinirim..
    Şimdi sorum şu:
    Değerleri önceden girilen 10 elemanlı
    tek boyutlu bir dizinin elemanlarını
    toplayan ve ortalamasını alan php
    kodunu yazınız.
    Ø While deyimini kullanınız.

    Yaptığm kodlar ise bunlar:

    <?
    $say[0]="15";
    $say[1]="25";
    $say[2]="30";
    $say[3]="40";
    $say[4]="55";
    $say[5]="66";
    $say[6]="70";
    $say[7]="88";
    $say[8]="96";
    $say[9]="1004";

    while($say[0])
    {
    $toplama = $say[0]+$say[1]+$say[2]+$say[3]+$say[4]+$say[5]+$say[6]+$say[7]+$say[8]+$say[9];
    echo "Hepsinin Toplamı : ".$toplama."<br>";

    $ortalama = $toplam/10;
    echo "Ortalaması : ".$ortalama."<br>";

    }
    ?>


    ancak çalışmadı.. bana yardımcı olabilirmisiniz. ?

    Teşekkürler.
  • 26-10-2010, 21:10:00
    #2
    <?
    $sira = 0;
    $toplam = 0;
    
    while ($sira < count($say)) {
      $toplam = ($toplam + $say[$sira]);
      $sira++;
    }
    
    $ortalama = ($toplam / count($say));
    echo 'Ortalama : ' . $ortalama;
    ?>
  • 26-10-2010, 21:18:15
    #3
    Üyeliği durduruldu
    hocam ben anlamadım sanırım. ?
  • 26-10-2010, 21:36:01
    #4
    Kimlik doğrulama veya yönetimden onay bekliyor.
    <?php
    
    $sayilar = array();
    $sayilar[] = 52;
    $sayilar[] = 532;
    $sayilar[] = 987;
    $sayilar[] = 5678;
    
    $sayac = 0;
    $toplam = 0;
    
    while ($sayac < count($sayilar))
    	$toplam = $toplam + $sayilar[$sayac++];
    
    $ortalama = $toplam / count($sayilar);
    
    echo 'Toplam: ' . $toplam . '<br />';
    echo 'Ortalama: ' . $ortalama;
    
    ?>
  • 26-10-2010, 22:11:50
    #5
    Üyeliği durduruldu
    hocam, while döngüsünü if else gibi bir koşul yapısı olarak düşünün. farkı ise; koşul gerçekleşiyorsa işlem yapılıyor ve tekrar koşula bakıyor. Eğer koşul hala geçerliyse işlemi tekrar yapıyor.

    while(koşul){
    işlem
    }

    Eğer işlem sırasında koşulu değiştirecek bir şey yapmazsanız programınız sonsuz döngüye girer.

    <?
    $sira = 0;
    $toplam = 0;
    
    while ($sira < count($say)) { // burada count() fonksiyonu ile $say dizisindeki eleman sayısı sayılıyor ve sıra değişkeninden küçük ise işlem gerçekleşiyor.
      $toplam = ($toplam + $say[$sira]);//her dizi elemanı teker teker yazılmak yerine $say[$sira] olarak verilmiş. çünkü zaten $sira değişkeni döngü her döndüğünde artıyor. 
      $sira++; // işlem sonunda sıra değişkeni 1 arttırılıyor. böylece işlem 10 defa yapıldığında, dizinizde 10 eleman olduğu için koşul sağlanmayacak ve döngüden çıkacak. 
    }
    
    $ortalama = ($toplam / count($say));
    echo 'Ortalama : ' . $ortalama;
    ?>
    Bu arada ben hocanın yerinde olsaydım, "0" olan dizi elemanlarını ortalama hesaplarken kullanmayan bir program karşısında etkilenirdim :P
  • 27-10-2010, 10:42:54
    #6
    Üyeliği durduruldu
    $sayilar = array();
    $sayilar[] = 52;
    $sayilar[] = 532;
    $sayilar[] = 987;
    $sayilar[] = 5678; 
    
    echo "toplam : ".($toplam = array_sum($sayilar));
    echo "ortalama : ".($toplam / count($sayilar));
    boyle de kullanabilrisiniz
  • 27-10-2010, 11:00:52
    #7
    Üyeliği durduruldu
    $sayilar = array(52,25,18,943,5);
    gibi de olabilir.
  • 27-10-2010, 12:13:25
    #8
    Üyeliği durduruldu
    Döngüyü kullanmadan once dongu hangi mantıkla calisir once ona bir bakalım.
    while($kosul) {
    // islem
    }
    $kosul degeri yanlis olana bloklar arasindaki islemi tekrarlar.
    senin sorunun cevabina gelince. once 10 tane rastgele sayi bulalim

    <?php
    $i = 0;
    $sayilar = array();
    $toplam = 0;
    	// rastgele sayilarida uygulamaya olusturttuk
    	while($i <= 9 )
    	{
    	  $sayilar[$i] = rand(5,100); 
    	  $i++;
    	}
    	
    	// simdi hepsini toplatiyoruz
    	$j = 0;
    	while($j <= 9)
    	{
    		$toplam += $sayilar[$j];
    		$j++;
    	}
    	// ortalamayi al
    	$ortalama = $toplam / 10;
    	echo $ortalama;
    	
    	echo '<br />Üretilen Sayilar : <pre>';
    	print_r($sayilar);
    	
    	
    ?>