this program's problems:
1.when we enter y, doesn't get 2nd student's name.
2.after 2nd student when we enter n, program prints mistake things.
3.average is 0 forever.
sorry for my bad english.
Code:#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 %domin student's name:\n",i); gets((*p).name); printf("enter %domin student's family:\n",i); gets((*p).family); printf("enter %domin student's namedan:\n",i); gets((*p).namedan); printf("enter %domin 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=1;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=1;i<=s;i++){ sum=sum+(*p).mark; p++; } avg=sum/s; return avg; }



3Likes
LinkBack URL
About LinkBacks



