Şimdi Ara

C - Program Çalışmıyor - (Struct ve Function)

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir (1 Mobil) - 1 Masaüstü1 Mobil
5 sn
5
Cevap
0
Favori
977
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
Öne Çıkar
0 oy
Sayfa: 1
Giriş
Mesaj
  • Merhaba arkadaşlar.. Bir ödevim var üzerinde çalışmama rağmen tamamlayamadım. txt dosyasından öğrencilere ait isim soy isim midterm1 midterm2 ve final notlarını okuyup, programda bunları istenilen sınava göre büyükten küçüğe sıralayacak şekilde ekrana yazdırmak. Programı ben aşağıdaki şekilde yazdım anca syntax error veriyor fonksiyonu çağırdığım yerler için. Ayrıca fonksiyon içinde de bir sorun veriyor. Nerede yanlış yapıyorum acaba? Yardımcı olursanız çok mutlu olucam...


    #include <stdio.h> 
    #define SIZE 10

    struct student {

    char name[20];
    char surname[20];
    int mid1,mid2,final;
    };

    void bubble(struct student a[SIZE]){

    int pass,i,hold;

    for(pass=1; pass<SIZE; pass++){
    for(i=0; i<SIZE-1; i++){
    hold= a[i];
    a[i]= a[i+1];
    a[i+1]= hold;
    }
    }
    }

    int main(){

    int i,request;
    struct student info[SIZE];

    FILE *cfPtr;

    if ( (cfPtr = fopen("grades.txt", "r") ) == NULL){
    printf("File could not be opened\n");
    }
    else {
    printf("Which notes do you want to learn? For Midterm 1 >> Press 1\t For Midterm 2 >> Press 2\t For Final >> Press 3\n");
    scanf("%d",&request);
    }

    while( !feof(cfPtr) ){
    fscanf(cfPtr,"%s %s %d %d %d", info[i].name, info[i].surname, &info[i].mid1, &info[i].mid2, &info[i].final);
    }

    fclose(cfPtr);

    if(request=1){
    void bubble(struct student info[SIZE].name);
    void bubble(student info[SIZE].surname);
    void bubble(student info[SIZE].mid1);
    printf("Midterm 1 Scores:\n");
    for(i=0; i<SIZE; i++)
    printf("%s %5.s %5.d\n", info[i].name, info[i].surname, info[i].mid1);
    }

    if(request=2){
    void bubble(student info[SIZE].name);
    void bubble(student info[SIZE].surname);
    void bubble(student info[SIZE].mid2);
    printf("Midterm 2 Scores:\n");
    for(i=0; i<SIZE; i++)
    printf("%s %5.s %5.d\n", info[i].name, info[i].surname, info[i].mid2);
    }

    if(request=3){
    void bubble(student info[SIZE].name);
    void bubble(student info[SIZE].surname);
    void bubble(student info[SIZE].final);
    printf("Final Scores:\n");
    for(i=0; i<SIZE; i++)
    printf("%s %5.s %5.d\n", info[i].name, info[i].surname, info[i].final);
    }
    }



    _____________________________




  • verilen error ları yazar mısın? void de return istiyor olabilir. hataları yazarsan tekrar bakarım sadece göz gecirdim.
    _____________________________
  • Konuyuda unutmuşum koddan gerçekten bir şey anlamadım kalıtım yaparak yazmayı denesen bence sorun kalmayacak.
    _____________________________
  • Programını compile etmedim ama gözüme çarpan birçok hatan var:

    1-) Oluşturmuş olduğun info array'inin i'inci değerini okumak istiyorsun ama i değerine herhangi bir sayı atamamışsın. info array'inin elemanlarına değer atamak istiyorsan, i değerini 0'dan SIZE'a kadar ilerleten bir for döngüsü kullanmanı öneririm.

    2-) if'lerin içinde request değerini 1, 2 veya 3'le karşılaştırırken tek eşittir(=) işareti kullanmışsın. if statement'ı içerisinde eşitlik karşılaştırması yapmak istiyorsan iki eşittir işareti (==) kullanman lazım. if(request==1) gibi.

    Buradaki hatan çok önemli. Çok büyük yanlışların var.
    3-)
    a-) Fonksiyon çağırırken;

    void bubble(struct student info[SIZE].name);

    şeklinde bir çağırma yapmışsın. Fonksiyon çağırılırken başına return değeri yazılmaz. Yani;

    bubble(argüman buraya gelecek)

    yazman gerekmekte.

    b-) struct'ını oluşturduğun değerin sonradan başına struct yazman gerekmiyor. Onu

    struct student info[SIZE];

    şeklinde tanımladıktan sonra o objeyi kullanabilmek için

    info[].mid1

    yazman yeterli olacaktır.

    c-) Tanımlamış olduğun bubble fonksiyonuna argüman olarak bir student array'i istiyorsun ama gönderdiğin argümanlar, o struct'ın birer elemanı. Oradaki karışıklıkları da gidermen gerekecek.
    _____________________________




  • Kusura bakmayın arkadaşlar, sınavlarım yoğun olduğundan bakamadım buraya. Sorun hala devam etmekte birkaç ufak değişiklik yapıp farklı şeyler denememe rağmen.

    Resimde bütün sorunlar prt. sc. ettim. Fonksiyonun içinde ve fonksiyonu çağırdığım yerlerde hata veriyor. Promgam çıktısının şu şekilde olması lazım;

    Midterm1(2) (final) Scores:
    name1 surname1 90
    name2 surnam2 80
    name3 surname3 70
    .
    .
    .
    gibi büyükten küçüğe doğru sıralanıp bu şekilde ekrana gelecek..



     C - Program Çalışmıyor - (Struct ve Function)
    _____________________________




  • Yapay Zeka’dan İlgili Konular
    c# ComboBox hakkında
    17 yıl önce açıldı
    Daha Fazla Göster
    
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.