1. Mücahit Tünel
  2. Yardım İsteyenler
  3. Pazar, Nisan 10 2016, 10:32 PM
  4.  E-posta abonesi olun

Merhaba arkadaşlar. Çoklu struct yapılarda pointer kullanırken scanf te tanıtmada problem yaşadım. örneğin struct öğrenci, struct dönem,struct ortalama diye 3 tane struct açtık. ve iki tane öğrencinin tüm bilgilerini kullanıcıdan alıp burada tutacağız ama sadece pointer aritmetiği kullanarak bu işlemi yapacağız. Dizi kullanmak yasak. Yani kodun hiçbir yerinde köşeli parantez kullanılmayacak. Pointer aritmetiği kullanırken scanfte tanıttığımızda sıraylara & işareti koyup -> işaretiyle gideceği yeri belirtiyoruz. Bunu struct öğrenci için tanıtırken sorun çıkmıyor ama bir sonraki struct dönem için tanıtma yaparken sorun çıkıyor. Bunu nasıl düzeltebilirim yardımcı olursanız sevinirim.. 


 


Eğer biraz karışık geldiyse anlattıklarım özelden mesaj atın soruyu yazıyim..

Mücahit Tünel Onaylanan Yanıt
0
Votes
Undo

Eyvallah lazım olan yeri buldum sağol


 

Yorum
There are no comments made yet.
zuo ksrf Onaylanan Yanıt
1
Votes
Undo

Ne  yapacağımı pek anlamadığımdan öyle bişeyler uydurdum.

Yorum
There are no comments made yet.
zuo ksrf Onaylanan Yanıt
1
Votes
Undo

Hocam çok saçma bişeyler yaptum ama işini görür umarım.


 


#include <stdio.h>


#include <stdlib.h>


struct students{


 


char *name;


char *surname;


int  no;


};


 


struct term1{


 


int grade1;


int grade2;


};


 


struct average{


 


int ave;


};


 


int main()


{


int x,i,j;


printf("Kac ogrenci var? :::");


scanf("%d",&x);


struct students *ogrenci;


ogrenci=(struct students*)malloc(x*sizeof(struct students));// ogrenci yapisi için yer aldık


for(i=0;i<x;i++)


{


(ogrenci+i)->name =(char *)malloc(100*sizeof(char));// ogrencideki stringler icin yer aldık


(ogrenci+i)->surname =(char *)malloc(100*sizeof(char));


 


}


struct term1 *notlar;// notlar icin yer


notlar=(struct term1*)malloc(x*sizeof(struct term1));


 


struct average *ortalamalar;// ortalmalar icin yer


ortalamalar=(struct average*)malloc(x*sizeof(struct average));


 


printf("Sirasi ile Ogrencinin Adi-Soyadi  Ogrencinin Numarasi  Ogrencinin 1.Notunu-2.Notunu Giriniz :::");


for(i=0;i<x;i++)


{


scanf("%s  %s %d",(ogrenci+i)->name,(ogrenci+i)->surname, &(ogrenci+i)->no);


 


scanf("%d %d",&(notlar+i)->grade1,&(notlar+i)->grade2);


 


}


 


for(i=0;i<x;i++)


{


(ortalamalar+i)->ave=((notlar+i)->grade1  + (notlar+i)->grade2 ) / 2;


 


}


for (i=0;i<x;i++){


printf("%s %s  Ortalmasi =%d\n",(ogrenci+i)->name,(ogrenci+i)->surname,(ortalamalar+i)->ave);


 


}


 


 


 


 


return 0;


}

Yorum
There are no comments made yet.
  • Sayfa :
  • 1


There are no replies made for this post yet.
However, you are not allowed to reply to this post.