PDA

View Full Version : مبتدی: مشکلی در برنامه C



alireza_e92
یک شنبه 29 خرداد 1390, 11:50 صبح
سلام. این برنامرو نوشتم. ولی وقتی اطلاعات اولین دانشجو رو میگیره بعد میپرسه میخوای ادامه بدی؟ میگی بله. تو نفر دوم دیگه اسم طرفو نمیگیره. رد میکنه. این یه مشکلشه. بعدشم وقتی میگه ادامه میدی نه رو میزنی برنامه قاطی میکنه. این یه مشکل دیگشه. معدلم صفر میشه هر چی میدی. اینم مشکل دیگش. ممنون میشم راهنمایی کنید. :قلب:

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>

struct student {
char name[20];
char family[30];
char namedan[30];
float mark;
} *p;

void print (student *, int);
int marks (student *, int);

int main(){
int i;
char ch;



for(i=1;;i++){
p=(student *) malloc (sizeof(student));
p++;
printf("\nenter %d student's name:\n",i);
gets((*p).name);
printf("enter %d student's family:\n",i);
gets((*p).family);
printf("enter %d student's namedan:\n",i);
gets((*p).namedan);
printf("enter %d student's average:\n",i);
scanf("%f",&(*p).mark);

printf("do you want to enter another student's information?(y or n)");
ch=getche();

if (ch!='y') break;
free(p);
}
print(p,i);
printf ("average of student's marks is: %f",marks(p,i));

getch();
return 0;
}

void print (student *p, int s){
int i;
for (i=0;i<s;i++){
printf("\n%s\t%s\t%s\t%f\n",(*p).name,(*p).family,(*p).namedan,(*p).mark);
p++;
}
}

int marks (student *p, int s){
int i;
float avg,sum=0;

for (i=0;i<s;i++){
sum=sum+(*p).mark;
p++;
}
avg=sum/s;
return avg;

}