Üniversite Harf Notu Hesaplama

Üniversite Harf Notu Hesaplama

Merhaba arkadaşlar,

Öncelikle Kurban Bayramınızı en içten dileklerimle kutlarım.

Bugün sizlerle üniversite not ortalamanızın hangi harf notuna denk geldiğini hesaplayabilen bir Üniversite harf notu hesaplama uygulaması kodlayacağız.


Üniversite Harf Notu Nasıl Hesaplanır

Kocaeli Üniversitesinde okuduğum için genel olarak Kocaeli Üniversitesinin harf notu hesaplama oranlarını kullanacağım.

Harf notu hesaplanırken vize notunuzun %40’ı alınır ve final notunuzun %60’ı alınarak oluşan yeni notlar toplanır. Biz bu oranı daha iyi anlayabilmek için Vizeden 80 finalden 75 aldığımızı varsayalım.

Vize: 80

Vize %40 = 32 Puan etmektedir.

Final: 75

Final %60 = 45 Puan etmektedir.

Ders Harf Notumuz = (Vize %40) + (Final %60) = 77 Puan etmektedir.

Peki bu 77 puan hangi harf notuna denk geliyor. Bunun için harf notu aralıklarını inceleyelim.

Harf NotuPuan Aralığı
AA88-100
BA81-87
BB74-80
CB67-73
CC60-66
DC53-59
DD46-52
FD46-52
FF0-38
Harf notu – Puan Aralığı Tablosu

Tabloya göre Not ortalaması 77 olan bir öğrenci BB Harf notunu alabilmektedir.


Üniversite Harf Notu Hesaplama Örneği

Yapacağımız örnekte kullanıcıdan vize sınavından aldığı notu isteyeceğiz ve ardından her not aralığı için en az kaç puan alması gerektiğini göstereceğiz.

Örneğin: Vize notunu 80 olarak sisteme giren bir öğrenci için

FD NOTUNU ALMANIZ ICIN GEREKEN PUAN: 11.67
DD NOTUNU ALMANIZ ICIN GEREKEN PUAN: 23.33
DC NOTUNU ALMANIZ ICIN GEREKEN PUAN: 35.00
CC NOTUNU ALMANIZ ICIN GEREKEN PUAN: 46.67
CB NOTUNU ALMANIZ ICIN GEREKEN PUAN: 58.33
BB NOTUNU ALMANIZ ICIN GEREKEN PUAN: 70.00
BA NOTUNU ALMANIZ ICIN GEREKEN PUAN: 81.67
AA NOTUNU ALMANIZ ICIN GEREKEN PUAN: 93.33

şeklinde bir bilgi mesajı gösterilecektir.


İlk olarak void tipinde finalHesapla adında tek parametreli bir fonksiyon oluşturalım.

void finalHesapla(int vize)
{
  // finalHesapla fonksiyonu
}

vize notumuzun %40’ı pozitif doğal sayılar kümesinde yer alacağı için float değişken tipinde bir değişken oluşturuyoruz ve bu değişkenimize vize notumuzun %40’ını ekliyoruz.

void finalHesapla(int vize)
{
    float vizeOran = vize * 0.4;
}

Vize notumuzun %40’ınıda aldığımıza göre artık geçme notu aralığımızı belirleyebiliriz.

Biz örneğimizde minimum kaç almasının gerektiğini hesapladığımız için harf notlarımızın minimum değerlerinin tutulduğu bir dizi oluşturuyoruz.

Birde bu diziye karşılık gelecek harf notlarının tutulduğu char tipinde bir dizi oluşturuyoruz.

Harf notumuz için minimum kaç puan gerektiğini hafızada tutmak için ise float tipinde bir değişken oluşturuyoruz.

void finalHesapla(int vize)
{
    float vizeOran = vize * 0.4;
    //FF,FD,DD,DC,CC,CB,BB,BA,AA
    int gecmeNotlari[9] = {0,39,46,53,60,67,74,81,88};
    char *gecmeHarfleri[9] = {"FF","FD","DD","DC","CC","CB","BB","BA","AA"};
    float gerekli;
}

Artık döngümüzü oluşturabiliriz. Döngümüzün kontrolünü “gecmeNotlari” dizisini tek tek kontrol ederek gerçekleştireceğiz. Bunun için for döngüsü kullanacağız.

void finalHesapla(int vize)
{
    float vizeOran = vize * 0.4;
    //FF,FD,DD,DC,CC,CB,BB,BA,AA
    int gecmeNotlari[9] = {0,39,46,53,60,67,74,81,88};
    char *gecmeHarfleri[9] = {"FF","FD","DD","DC","CC","CB","BB","BA","AA"};
    float gerekli;
    for(int i = 0 ; i < 9; i++)
    { //gecme notları dizisini tek tek inceliyoruz.
    
    }
}

“VizeOran” yani vizemizin %40’ı “gecmeNotlari” dizisindeki elemanlardan küçük yada eşit olması durumunda o harf notuna sahip olabir. Örneğin:

Vize oranı 40 olan bir öğrenci kurallarımıza göre asla FF not alamaz.

void finalHesapla(int vize)
{
    float vizeOran = vize * 0.4;
    //FF,FD,DD,DC,CC,CB,BB,BA,AA
    int gecmeNotlari[9] = {0,39,46,53,60,67,74,81,88};
    char *gecmeHarfleri[9] = {"FF","FD","DD","DC","CC","CB","BB","BA","AA"};
    float gerekli;
    for(int i = 0 ; i < 9; i++)
    {//gecme notları dizisini tek tek inceliyoruz.
        if(vizeOran <= gecmeNotlari[i])
        { // vizeOran degerimiz gecme notundan kucuk veya esitse bu blok calisiyor.
        }

    }
}

Artık tek yapmamız gereken şey harf notunu alabilmemiz için harf notumuzun üzerine kaç puan almamız gerektiğini hesaplamak. Bunun için “gerekli” adına bir değişken oluşturmuştuk. Bu değişkenimize “gecmeNotlari” dizimizden seçili olan değerden vize oranımızı çıkartıyoruz. Örneğin:

Vize %40’ı 40 olan bir öğrenci için DD Notunu bulmamız için DD notumuzun minimum değerinden Vizemizin %40’ını çıkartıyoruz.

DD = 46

Gerekli Puan = 46 – 40 = 4

Ardından bulduğumuz bu değer bizim final notumuzun %60’ı olmuş oluyor. Gerçek notumuzu hesaplamak için bulduğumuz değeri 100 ile çarpıp 60’a bölmemiz gerekiyor.

Gerekli Puan = (4*100) / 60 = 6,667

Buna sonuca göre DD puanı alabilmemiz için final sınavında 6,667 puan almamız gerekmektedir.

void finalHesapla(int vize)
{
    float vizeOran = vize * 0.4;
    //FF,FD,DD,DC,CC,CB,BB,BA,AA
    int gecmeNotlari[9] = {0,39,46,53,60,67,74,81,88};
    char *gecmeHarfleri[9] = {"FF","FD","DD","DC","CC","CB","BB","BA","AA"};
    float gerekli;
    for(int i = 0 ; i < 9; i++)
    {//gecme notları dizisini tek tek inceliyoruz.
        if(vizeOran <= gecmeNotlari[i])
        { // vizeOran degerimiz gecme notundan kucuk veya esitse bu blok calisiyor.
            gerekli = (float)gecmeNotlari[i] - vizeOran;
            gerekli = (gerekli * 100) / 60;
        }

    }
}

Artık harf notunu almamız için gerekli olan notu bulduk bu not 100’den büyük ise diğer not aralığına geçeceğiz fakat bulduğumuz gerekli not 100’den küçük ise ekrana gerekli notu göstereceğiz.

void finalHesapla(int vize)
{
    float vizeOran = vize * 0.4;
    //FF,FD,DD,DC,CC,CB,BB,BA,AA
    int gecmeNotlari[9] = {0,39,46,53,60,67,74,81,88};
    char *gecmeHarfleri[9] = {"FF","FD","DD","DC","CC","CB","BB","BA","AA"};
    float gerekli;
    for(int i = 0 ; i < 9; i++)
    {//gecme notları dizisini tek tek inceliyoruz.
        if(vizeOran <= gecmeNotlari[i])
        { // vizeOran degerimiz gecme notundan kucuk veya esitse bu blok calisiyor.
            gerekli = (float)gecmeNotlari[i] - vizeOran;
            gerekli = (gerekli * 100) / 60;
            if(gerekli > 100) //Alinmasi gereken deger 100'den buyukse bu blok calisiyor.
                continue; // For dongusunun basina git
            else // Alinmasi gereken not 100'den kucukse bu blok calisiyor.
                printf("%s NOTUNU ALMANIZ ICIN GEREKEN PUAN: %.2f\n",gecmeHarfleri[i],gerekli);
        }

    }
}

Evet fonksiyonumuzu hazırladık artık main bloğumuzda bu fonksiyonu çalıştırabiliriz.

int main()
{
    int vize;
    printf("Vize notunuz: ");
    scanf("%d", &vize);
    finalHesapla(vize);
    return 0;
}

Bu şekilde örneğimizi tamamladık.


Örneğimizin Tüm Kodları

Örneğimizde bulunan kodların tamamının bir araya getirilmiş halidir.

#include <stdio.h>
#include <stdlib.h>
#include <string.h>


/**
88-100 AA | 81-87 BA  | 74-80 BB | 67-73 CB  | 60-66 CC | 53-59 DC | 46-52 DD | 39-45 FD |0-38 FF
*/
void finalHesapla(int vize)
{
    float vizeOran = vize * 0.4;
    //FF,FD,DD,DC,CC,CB,BB,BA,AA
    int gecmeNotlari[9] = {0,39,46,53,60,67,74,81,88};
    char *gecmeHarfleri[9] = {"FF","FD","DD","DC","CC","CB","BB","BA","AA"};
    float gerekli;
    for(int i = 0 ; i < 9; i++)
    {//gecme notları dizisini tek tek inceliyoruz.
        if(vizeOran <= gecmeNotlari[i])
        { // vizeOran degerimiz gecme notundan kucuk veya esitse bu blok calisiyor.
            gerekli = (float)gecmeNotlari[i] - vizeOran;
            gerekli = (gerekli * 100) / 60;
            if(gerekli > 100) //Alinmasi gereken deger 100'den buyukse bu blok calisiyor.
                continue; // For dongusunun basina git
            else // Alinmasi gereken not 100'den kucukse bu blok calisiyor.
                printf("%s NOTUNU ALMANIZ ICIN GEREKEN PUAN: %.2f\n",gecmeHarfleri[i],gerekli);
        }

    }
}
int main()
{
    int vize;
    printf("Vize notunuz: ");
    scanf("%d", &vize);
    finalHesapla(vize);
    return 0;
}


Üniversite harf notu hesaplama örneğimi incelediğiniz için teşekkür ederim. Sağlıklı günler dilerim.

Bloğumu halen incelemediniz mi ? https://enginyenice.com/

Hakkımda: https://enginyenice.com/hakkimda/

İletişim: https://enginyenice.com/iletişim/

Yayımlayan

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir