Bir öğrenci için yapılan işlemleri birden fazla öğrencide çalışacak şekilde uyarlamak

#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <stdlib.h>
int secim;
int ogrenciNumarasi;
char OgrenciAdi[20];
char OgrenciSoyadi[20];
int quiz1;
int quiz2;
int vize;
int proje;
int final;
int i= 0,n;

int ortalamaBulma(int quiz1,int quiz2,int vize,int proje,int final)
{
    int ortalama;
    ortalama = ((quiz1*10)/100) + ((quiz2*10)/100) + ((vize*15)/100) + ((proje*35)/100) + ((final*30)/100);
    return ortalama;
}

int main()
{  

    printf("*************************************************\nOnemli NOT: LUTFEN TURKCE KARAKTER KULLANMAYINIZ...\n*************************************************\n");

        printf("Adinizi giriniz (En Fazla 20 Karakter):\n");
        scanf("%s",&OgrenciAdi);
        printf("\nIsminiz = %s\n", OgrenciAdi);
   
        printf("\nSoyadinizi giriniz( En Fazla 20 Karakter) : \n");
        scanf("%s",&OgrenciSoyadi);
        printf("\nSoy isminiz = %s\n",OgrenciSoyadi);


        printf("\nNumaranizi basinda 'b' olmadan giriniz : \n");
        scanf("%d",&ogrenciNumarasi);
        printf("\nNumaraniz : %d\n",ogrenciNumarasi);

        printf("\nQuiz1 notunuzu giriniz : \n");
        scanf("%d",&quiz1);
        printf("\nQuiz1 notunuz : %d\n",quiz1);

        printf("\nQuiz2 notunuzu giriniz : \n");
        scanf("%d",&quiz2);
        printf("\nQuiz2 notunuz : %d\n",quiz2);

        printf("\nVize notunuzu giriniz : \n");
        scanf("%d",&vize);
        printf("\nVize notunuz : %d\n",vize);

        printf("\nProje notunuzu giriniz : \n");
        scanf("%d",&proje);
        printf("\nProje notunuz : %d\n",proje);

        printf("\nFinal notunuzu giriniz : \n");
        scanf("%d",&final);
        printf("\nFinal notunuz : %d\n",final);


        printf("\nNot ortalamaniz = %d\n",ortalamaBulma(quiz1,quiz2,vize,proje,final));

    
    
    



  
    
    printf("\nHangi sirada ekrana yazilsin?\n1.Ogrenci Numarasi\n2.Ogrenci Adi\n3.Ogrenci Soyadi\n4.Ogrenci Not Ortalamasi\n5.Cikis yapmak icin...\n");
    do
    {
        scanf("%d",&secim);
        if (secim == 1)
        {
            printf("Ogrenci Numarasi = %d\n",ogrenciNumarasi);
        }
        else if (secim == 2)
        {
            printf("Ogrenci Adi =  %s\n",OgrenciAdi);
        }
        else if (secim == 3)
        {
            printf("Ogrenci Soyadi = %s\n",OgrenciSoyadi);
        }
        else if (secim == 4)
        {
            printf("Ogrenci Not Ortalamasi = %d\n",ortalamaBulma(quiz1,quiz2,vize,proje,final));
        }
        else if (secim == 5)
        {
            printf("Cikis Yapiliyor...");
        }
        
        
        
        
        
    } while (secim != 5);
    
   
    

  

    






















    getch();
    
    
    
    

    
    
    


}

arkadaslar proje odevimdeki yazdigim kodlar bu sekilde. mantik bu sekilde yazilacak fakat ben 1 ogrenci icin yapiyorum bunu… birden cok ogrenci icin bilgilerini diziye atanmis sekilde nasıl yapabilirim?

C dilinde kod okumak pek kolay değildir. Bu nedenle acaba algoritmayı tam olarak anlatabilir misiniz ?

1 Beğeni

:question:

3 Beğeni

Ne oldu ? evet kolay değildir.

Ogrenci ile ilgili bilgilerin tamamini bir struct icine alarak baslayabilirsin. main'in basindaki kullanicidan girdi alan kismi, girdi alip ogrenci struct'i donduren bir fonksiyona koyabilirsin. main'de bu struct'larin bir dizisini ve icindeki eleman sayisini tutabilirsin.

struct ornegi:

#include <stdio.h>

struct foo {
    int x;
    int y;
};

struct foo getFoo(void)
{
    static int nextNum = 1; // Sadece donen her struct ayni olmasin diye

    struct foo newFoo;
    newFoo.x = nextNum++; // rastgele deger
    newFoo.y = 0;         // bu da
    return newFoo;
}

void printFoo(struct foo foo)
{
    printf("(%d, %d)\n", foo.x, foo.y);
}

int main(void)
{
    struct foo foos[10];

    foos[0] = getFoo();
    foos[1] = getFoo();

    printFoo(foos[0]); //(1, 0)
    printFoo(foos[1]); //(2, 0)

    return 0;
}
1 Beğeni