Not ortalamalarını sorunsuz halledebiliyorum ancak ben bu notlardan en düşük , en yüksek notu ve sınıf ortalmasını nasıl yapacağım yardımcı olursanız sevinirim .
#include<stdio.h>
#include <stdlib.h>
#include <conio.h>
float Odev(int odevSayisi,float odevNotlari[20])
{
float toplam=0;
for(int i = 0;i<odevSayisi;i++)
{
printf("\nOgrencinin %d. odev notunu giriniz: ",i+1);
scanf("%f",&odevNotlari[i]);
toplam += odevNotlari[i];
}
return toplam;
}
float EnDusukNot(float notOrtalamalari[],int ogrenciSayisi)
{
int min = notOrtalamalari[0];
for(int i =1; i<ogrenciSayisi; i++)
{
if(notOrtalamalari[i]<min)
{
min = notOrtalamalari[i];
}
}
return min;
}
float EnYuksekNot(float notOrtalamalari[],int ogrenciSayisi)
{
int max = notOrtalamalari[0];
for(int i =1; i<ogrenciSayisi; i++)
{
if(notOrtalamalari[i]>max)
{
max = notOrtalamalari[i];
}
}
return max;
}
float ortalamaHesapla(char ogrenciNo1[15],int odevSayisi)
{
float vize,final,notOrtalama,odevNotlari[20],odevToplam,odevOrtalama;
printf("%s nolu ogrenci icin vize notunu giriniz:",ogrenciNo1);
scanf("%f",&vize); //Kullanıcıdan vize notu alındı
while(1)
{
if(vize > 100 || vize < 0)
{//Girilen sayı kontrol edildi eğer hatalı giriş yapıldıysa tekrar notun girilmesi sağlandı.
printf("\n Girilen not 0-100 araliginda olmalidir! Lutfen tekrar vize notunu giriniz: ");
scanf("%f",&vize);//Vize notu tekrar alındı.
}
else {break;}
}
printf("%s nolu ogrenci icin final notunu giriniz: ",ogrenciNo1);
scanf("%f",&final); //Kullanıcıdan final notu alındı
while(1)
{
if(final > 100 || final < 0)
{ //Girilen sayı kontrol edildi eğer hatalı giriş yapıldıysa tekrar notun girilmesi sağlandı.
printf("\n Girilen not 0-100 araliginda olmalidir! Lutfen tekrar final notunu giriniz: ");
scanf("%f",&final);//Final notu tekrar alındı.
}
else {break;} //Doğru giriş yapıldıysa while döngüsünden çıktı.
}
if(odevSayisi > 0)
{
odevToplam = Odev(odevSayisi,odevNotlari);
odevOrtalama= odevToplam/odevSayisi;
printf("\n%s numarali ogrenci icin odev ortalamasi: %.2f",ogrenciNo1,odevOrtalama);
notOrtalama = (vize*3/10) + (final*4/10) + (odevOrtalama*3/10);
return notOrtalama;
}
else
{
notOrtalama = (vize*6/10) + (final*4/10);
return notOrtalama;
}
}
int main()
{
char ogrenciNo1[15];
int n;//Ortalama hesaplamaya devam etmek için 1 veya 0 tuşlamasını kontrol eden değişken.
int odevSayisi;
int i=0;
int ogrenciSayisi=1;
float notOrtalamalari[20];
printf("NOT ORTALAMASI HESAPLAMA");
printf("\n*******************");
printf("\nLutfen dersin odev sayisini giriniz: ");
scanf("%d",&odevSayisi);
printf("\nLutfen ogrenciye ait ogrenci numarasini giriniz:");
scanf("%s",&ogrenciNo1); //Öğrenci numarası girilmesi sağlandı.
printf("\n%s numarali ogrencinin not ortalamasi: %.2f ",ogrenciNo1,ortalamaHesapla(ogrenciNo1,odevSayisi));//Numarası ilk girilen öğrencinin not ortalaması hesaplandı.
while(1)//Her tuşlamada sürekli olarak fonksiyonun çalışabilmesi sağlandı.
{
printf("\n\nYeni bir ogrenci notu hesaplamak icin '1', cikmak icin '0' tuslayiniz: ");
scanf(" %d",&n);//Devam edip etmemek için kontrol değişkeni alındı
switch (n)
{
case 1://1 tuşlandıysa yeni öğrencinin not ortalamasını hesapla.
printf("\nLutfen ogrenciye ait ogrenci numarasini giriniz: ");
scanf("%s",&ogrenciNo1); //Öğrenci numarası alındı.
printf("\n%s numarali ogrencinin not ortalamasi: %.2f ",ogrenciNo1,ortalamaHesapla(ogrenciNo1,odevSayisi));//Not ortalaması yazıldı.
for(i=ogrenciSayisi-1; i<ogrenciSayisi;i++)
{
notOrtalamalari[i] = ortalamaHesapla(ogrenciNo1,odevSayisi);
}
ogrenciSayisi++;
break;
case 0: //0 tuşlandıysa uygulamadan çıkış yaptı.
MinMaxNot(notOrtalamalari,ogrenciSayisi);
//printf("Dersi alan %d ogrenci icin en dusuk not: %.2f",ogrenciSayisi,EnDusukNot(notOrtalamalari,ogrenciSayisi));
printf("\nDersi alan %d ogrenci icin sinif ortalamasi: %.2f",ogrenciSayisi);//sınf ortalamasını fonksiyonla çağır
system("pause"); //Sistemden çıkış yap.
break;
default: //1 ve 0'dan farklı tuşlama yapıldıysa tekrar tuşlama yapılmasını sağla.
printf("Hatali secim yaptiniz. Lutfen tekrar giriniz: ");
scanf("%d",&n); //tekrardan tuşlama sağlandı.
break;
}
}
return 0;
}