Sayfa 1 - Toplam 2 12 SonSon
Bulunan 1 den 10 - Toplam 15
Ortalama Hesaplama - - Programlama - Ceviz Forum
  1. #1
    Ceviz Üyesi ersink Üyenin Avatarı
    Üyelik Tarihi
    26-Temmuz-2010
    Nereden
    Ankara
    Mesaj
    662

    Varsayılan Ortalama Hesaplama

    Not ortalaması hesaplayan ufak bir script oluşturuyorum.
    Scriptte form sayfasından POST edilen veriler formdaki durumuna göre ortalaması alınıyor sonra genel ortalama hesaplanıyor. Mesela;
    Matematik için 3 kutu var.
    1. kutu zorunlu diğer 2'si opsiyonel. Kullanıcı 1. ve 2. yi girerse ikisinin ortalamasını alıyor. 1. ile 3. girerse ikisinin ortalamasını alıyor. 1,2,3. kutuları girerse üçünün ortalamasını alıyor. Yani 3 kutuda bile çok olasılık var. Ben bu scripti geliştirip sözlüleri de dahil etmek istiyorum. Dolayısıyla olasılık artacak. Daha kolay bir yöntem var mıdır ?
    Kodlar;
    PHP Kodu:
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-9">
    <?php
      
    if(isset($_POST)){
          
    //Resim
          
    if($_POST['resim2']==""){
              
    $resim=$_POST['resim1'];
          }else{
              
    $resim=($_POST['resim1']+$_POST['resim2'])/2;
          }
          
    //Biyoloji
          
    if($_POST['biyoloji2']==""){
              
    $biyoloji=$_POST['biyoloji1'];
          }else{
              
    $biyoloji=($_POST['biyoloji1']+$_POST['biyoloji2'])/2;
          }
          
    //Coğrafya
          
    if($_POST['cografya2']==""){
              
    $cografya=$_POST['cografya1'];
          }else{
              
    $cografya=($_POST['cografya1']+$_POST['cografya2'])/2;
          }
          
    //Din Kültürü
          
    if($_POST['din2']==""){
              
    $din=$_POST['din1'];
          }else{
              
    $din=($_POST['din1']+$_POST['din2'])/2;
          }
          
    //Fizik
          
    if($_POST['fizik2']==""){
              
    $fizik=$_POST['fizik1'];
          }else{
              
    $fizik=($_POST['fizik1']+$_POST['fizik2'])/2;
          }
          
    //Geometri
          
    if($_POST['geometri2']==""){
              
    $geometri=$_POST['geometri1'];
          }else{
              
    $geometri=($_POST['geometri1']+$_POST['geometri2'])/2;
          }
          
    //Almanca
          
    if($_POST['almanca2']==""){
              
    $almanca=$_POST['almanca1'];
          }else{
              
    $almanca=($_POST['almanca1']+$_POST['almanca2'])/2;
          }
          
    //Kimya
          
    if($_POST['kimya2']==""){
              
    $kimya=$_POST['kimya1'];
          }else{
              
    $kimya=($_POST['kimya1']+$_POST['kimya2'])/2;
          }
          
    //Tarih
          
    if($_POST['tarih2']==""){
              
    $tarih=$_POST['tarih1'];
          }else{
              
    $tarih=($_POST['tarih1']+$_POST['tarih2'])/2;
          }
          
    //Sağlık
          
    if($_POST['saglik2']==""){
              
    $saglik=$_POST['saglik1'];
          }else{
              
    $saglik=($_POST['saglik1']+$_POST['saglik2'])/2;
          }
          
    //Dil ve Anlatım
                
    if($_POST['dila2']==""){
              
    $dila=$_POST['dila1'];
          }else{
              
    $dila=($_POST['dila1']+$_POST['dila2'])/2;
          }
          
    //Matematik
          
    if($_POST['matematik2']=="" $_POST['matematik3']==""){
              
    $matematik=$_POST['matematik1'];
          }elseif(
    $_POST['matematik3']=="" $_POST['matematik2']!=""){
              
    $matematik=($_POST['matematik1']+$_POST['matematik2'])/2;
          }elseif(
    $_POST['matematik2']=="" $_POST['matematik3']!=""){
              
    $matematik=($_POST['matematik1']+$_POST['matematik3'])/2;
          }else{
              
    $matematik=($_POST['matematik1']+$_POST['matematik2']+$_POST['matematik3'])/3;
          }
          
    //Türk Edebiyatı
          
    if($_POST['edebiyat2']=="" $_POST['edebiyat3']==""){
              
    $edebiyat=$_POST['edebiyat1'];
          }elseif(
    $_POST['edebiyat3']=="" $_POST['edebiyat2']!=""){
              
    $edebiyat=($_POST['edebiyat1']+$_POST['edebiyat2'])/2;
          }elseif(
    $_POST['edebiyat2']=="" $_POST['edebiyat3']!=""){
              
    $edebiyat=($_POST['edebiyat1']+$_POST['edebiyat3'])/2;
          }else{
              
    $edebiyat=($_POST['edebiyat1']+$_POST['edebiyat2']+$_POST['edebiyat3'])/3;
          }
          
    //İngilizce
          
    if($_POST['ingilizce2']=="" $_POST['ingilizce3']==""){
              
    $ingilizce=$_POST['ingilizce1'];
          }elseif(
    $_POST['ingilizce3']=="" $_POST['ingilizce2']!=""){
              
    $ingilizce=($_POST['ingilizce1']+$_POST['ingilizce2'])/2;
          }elseif(
    $_POST['ingilizce2']=="" $_POST['ingilizce3']!=""){
              
    $ingilizce=($_POST['ingilizce1']+$_POST['ingilizce3'])/2;
          }else{
              
    $ingilizce=($_POST['ingilizce1']+$_POST['ingilizce2']+$_POST['ingilizce3'])/3;
          }
    $resims=$resim*2;
    $biyolojis=2*$biyoloji;
    $cografyas=2*$cografya;
    $fiziks=2*$fizik;
    $geometris=2*$geometri;
    $almancas=2*$almanca;
    $kimyas=2*$kimya;
    $tarihs=2*$tarih;
    $matematiks=4*$matematik;
    $edebiyats=3*$edebiyat;
    $ingilizces=7*$ingilizce;
    $dilas=2*$dila;
    $ortalama=($resims+$biyolojis+$cografyas+$fiziks+$geometris+$almancas+$kimyas+$tarihs+$matematiks+$edebiyats+$ingilizces+$dilas+$din+$saglik)/34;
    if(
    $ortalama >= 85){
      echo 
    "<center><b><font color=red>Ortalamanız</font> = <font color=#0000FF>".$ortalama."</b></font><br><img src='Resimler/5.gif'></center>"
    }
    elseif(
    $ortalama >= 70){
      echo 
    "<center><b><font color=red>Ortalamanız</font> = <font color=#00FF00>".$ortalama."</b></font><br><img src='Resimler/4.gif'></center>"
    }
    elseif(
    $ortalama >= 55){
      echo 
    "<center><b><font color=red>Ortalamanız</font> = <font color=#CACA00>".$ortalama."</b></font><br><img src='Resimler/3.gif'></center>"
    }
    elseif(
    $ortalama >= 45){
      echo 
    "<center><b><font color=red>Ortalamanız</font> = <font color=#FF8000>".$ortalama."</b></font><br><img src='Resimler/2.gif'></center>"
    }
    elseif(
    $ortalama >= 25){
      echo 
    "<center><b><font color=red>Ortalamanız</font> = <font color=#FF0000>".$ortalama."</b></font><br><img src='Resimler/1.gif'></center>"
    }
    else{
      echo 
    "<center><b><font color=red>Ortalamanız</font> = <font color=#800000>".$ortalama."<script>alert('En yakın köprüyü öğrenmek için http://maps.google.com');</script><br><img src='Resimler/0.gif'></b></font><br></center>"
    }       
      }
    ?>
    Cevaplar için teşekkürler,

  2. #2
    Üyeliği İptal Edildi
    Üyelik Tarihi
    17-Kasım-2009
    Nereden
    tinç
    Mesaj
    569

    Varsayılan

    Öncelikle kodundaki önemli hatalardan biri gereksiz hafıza alanı kullanman. Örneğin:
    PHP Kodu:
    $kimyas=2*$kimya
    Bundan sonra $kimya'yı bir daha kullanmadın. Öyleyse
    PHP Kodu:
    $kimya $kimya
    diyeceksin.

    Bir de kodunu tam olarak inceleyecek fırsatı bulamadım. İnceleyeceğim, şimdilik bunu hallet. Kolay gelsin.
    Son düzenleyen Scientius, 15-Ocak-2011 saat 15:56. Sebep: Ekleme

  3. #3
    Ceviz Üyesi Cihan Yakar Üyenin Avatarı
    Üyelik Tarihi
    08-Temmuz-2003
    Nereden
    Ankara
    Mesaj
    5,874

    Varsayılan

    inputbox'lara matematik1,2,3 diye isim vermek yerine hepsine "matematik" şeklinde (name özeliğini , id değeri vermeyin) isimlendirseniz, geriye matematik dizisi dönecektir.
    PHP Kodu:
     <input type="text" name="matematik" />
     <
    input type="text" name="matematik" />
     <
    input type="text" name="matematik" /> 
    Bir metot yazarsınız, kendisine verilen dizideki boş olmayan elemanların ortalamasını alır.Böylece tek satırda ortalama almış olursunuz.
    Blog Adresim
    LIGHTSWITCH

  4. #4
    Ceviz Üyesi ersink Üyenin Avatarı
    Üyelik Tarihi
    26-Temmuz-2010
    Nereden
    Ankara
    Mesaj
    662

    Varsayılan

    O tarz bir şey yaptım ancak, diziye boş elemanlar da geliyor.
    Mesela;
    PHP Kodu:
    <?
    $mat 
    count($_POST['mat']);
    echo 
    $mat;
    if(
    $mat==1){
             
    $mats=$_POST['mat'];
    }
    elseif(
    $mat==2){
                 
    $mats=($_POST['mat'][0]+$_POST['mat'][1])/2;
    }
    echo 
    $mats;


    ?>
    Gibi bir şey yaptığımızda 1 sayı göndersek de 2 eleman olarak sayıyor.
    Nasıl kullanabiliriz başka ?

  5. #5
    Ceviz Üyesi
    Üyelik Tarihi
    13-Mart-2010
    Mesaj
    35

    Varsayılan

    Aşağıdaki kodu sana özel hazırladım. direk çalıştır. Çalıştırdıktan sonrada iyice incele ne yaptığımı anlamaya çalış ve kendi sistemine uyarla.

    PHP Kodu:
    <?
    header
    ('Content-Type: text/HTML; charset=UTF-8');
    $dersler = array('resim','biyoloji','cografya','din','fizik','geometri','almanca','kimya','tarih','saglik','dila','matematik','ingilizce');
    $not_sayisi = array('2','2','2','2','2','2','2','2','2','2','2','3','3');
    if(
    $_POST){
        foreach(
    $dersler as $indis => $ders){
            
    $toplam 0;
            
    $bos_olmayan 0;
            foreach(
    $_POST[$ders] as $not){
                
    $toplam $toplam $not;
                if(
    $not!=""){
                    
    $bos_olmayan $bos_olmayan 1;
                }
            }
            if(
    $bos_olmayan>0){
                
    $not_dizisi[$ders]=$toplam/$bos_olmayan;
            }
        }
        
        foreach(
    $dersler as $ders){
            
    $ortalama $not_dizisi[$ders];
            if(
    $ortalama >= 85 and $ortalama!=""){ 
              echo 
    "<center><b><font color=red>".ucfirst($ders)." Dersi Ortalamanız</font> = <font color=#0000FF>".$ortalama."</b></font><br><img src='Resimler/5.gif'></center>";  
            } 
            elseif(
    $ortalama >= 70 and $ortalama!=""){ 
              echo 
    "<center><b><font color=red>".ucfirst($ders)." Dersi Ortalamanız</font> = <font color=#00FF00>".$ortalama."</b></font><br><img src='Resimler/4.gif'></center>";  
            } 
            elseif(
    $ortalama >= 55 and $ortalama!=""){ 
              echo 
    "<center><b><font color=red>".ucfirst($ders)." Dersi Ortalamanız</font> = <font color=#CACA00>".$ortalama."</b></font><br><img src='Resimler/3.gif'></center>";  
            } 
            elseif(
    $ortalama >= 45 and $ortalama!=""){ 
              echo 
    "<center><b><font color=red>".ucfirst($ders)." Dersi Ortalamanız</font> = <font color=#FF8000>".$ortalama."</b></font><br><img src='Resimler/2.gif'></center>";  
            } 
            elseif(
    $ortalama >= 25 and $ortalama!=""){ 
              echo 
    "<center><b><font color=red>".ucfirst($ders)." Dersi Ortalamanız</font> = <font color=#FF0000>".$ortalama."</b></font><br><img src='Resimler/1.gif'></center>";  
            } 
            else{ 
                if(
    $ortalama!=""){
                      echo 
    "<center><b><font color=red>".ucfirst($ders)." Dersi Ortalamanız</font> = <font color=#800000>".$ortalama."<script>alert('En yakın köprüyü öğrenmek için http://maps.google.com');</script><br><img src='Resimler/0.gif'></b></font><br></center>";  
                }
            } 
           }
    }else{
    ?>
        <form action="" method="post">
        <?
            
    foreach($dersler as $indis => $ders){
        
    ?>
            <b><?=ucfirst($ders);?></b><br/>
            <?
                
    for($i=1;$i<$not_sayisi[$indis]+1;$i++){
                    echo 
    'Sınav '.$i.' : <input type="text" name="'.$ders.'[]"><br/>';
                }
            
    ?>
        <?
            
    }
        
    ?>
        <input type="submit" value="Gönder">
        </form>
    <?
    }
    ?>
    Son düzenleyen og-me, 22-Ocak-2011 saat 17:07. Sebep: Bir yerde hata vardı düzelttim haberin olsun kardeşim

  6. #6
    Ceviz Üyesi ersink Üyenin Avatarı
    Üyelik Tarihi
    26-Temmuz-2010
    Nereden
    Ankara
    Mesaj
    662

    Varsayılan

    Çok teşekkür ederim de karışık geldi

  7. #7
    Ceviz Üyesi
    Üyelik Tarihi
    13-Mart-2010
    Mesaj
    35

    Varsayılan

    Bunu tek dosya olarak bi çalıştır sonrada satır satır incele anlıcaksın

  8. #8
    Ceviz Üyesi ersink Üyenin Avatarı
    Üyelik Tarihi
    26-Temmuz-2010
    Nereden
    Ankara
    Mesaj
    662

    Varsayılan

    İnceliyorum ama çözemedim daha
    Tekrar teşekkürler.

  9. #9
    Ceviz Üyesi
    Üyelik Tarihi
    13-Mart-2010
    Mesaj
    35

    Varsayılan

    Önemli değil. Takıldığın yer olduğunda çekinmeden sor. Yine halledemezsen hangi sayfaya ne şekil yerleştirmek istediğini söyle direk yazıp göndereyim . Saat 10-11 gibi burda olcam o zamana kadar cevap yazamam kolay gelsin.

  10. #10
    Ceviz Üyesi ersink Üyenin Avatarı
    Üyelik Tarihi
    26-Temmuz-2010
    Nereden
    Ankara
    Mesaj
    662

    Varsayılan

    Başka önerisi olan var mı acaba ?

Sayfa 1 - Toplam 2 12 SonSon

Konu Bilgileri

Bu Konuya Gözatan Kullanıcılar

Şu anda 1 kullanıcı bu konuyu görüntülüyor. (0 kayıtlı ve 1 misafir)

Yer İmleri

Mesaj Yetkileriniz

  • Yeni konu açmaya yetkiniz yok
  • Cevap yazmaya yetkiniz yok
  • Eklenti yüklemeye yetkiniz yok
  • Mesajınızı düzeltmeye yetkiniz yok
  •