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; };
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); }
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..
Bu mesaja 1 cevap geldi. Cevapları Gizle
Bu mesaja 1 cevap geldi. Cevapları Gizle
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.
Bu mesaja 1 cevap geldi. Cevapları Gizle
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..
< Resime gitmek için tıklayın >