I have created a student grading program that should allow me to enter gades ansd also sort according to date, oldest first. The code supplied is a different version compared to the earlier one.
Code:
/* Question 3. It describes a student using structures and arrays to
store and print data */
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
#define N_student 4
int i,n;
struct student
{
char id[5];
char name[50];
double Bday,Bmonth,Byear;
double mark1, mark2, mark3;
double av_marks;
char grade;
} students [N_student];
void assigngrade();
void printavg();
main()
{
char buffer[50];
double total;
for (i=0; i<N_student; i++)
{
printf("Enter Student ID no: \n");
gets(students[n].id);
printf("Enter Student name: \n");
gets (students[n].name);
printf("Enter Date Of Birth (dd):");
gets (buffer);
students[n].Bday = atof (buffer);
printf("Enter Month Of Birth (mm):");
gets (buffer);
students[n].Bmonth = atof (buffer);
printf("Enter Year Of Birth (yyyy):");
gets (buffer);
students[n].Byear = atof (buffer);
printf("Enter marks obtained for test1(0-4): \n");
gets (buffer);
students[n].mark1 = atof (buffer);
printf("Enter marks obtained for test2(0-4): \n");
gets (buffer);
students[n].mark2 = atof (buffer);
printf("Enter marks obtained for test3(0-4): \n");
gets (buffer);
students[n].mark3 = atof (buffer);
total = (double)students[n].mark3 + (double)students[n].mark2 + (double)students[n].mark1;
students[n].av_marks = (double)total/3;
assigngrade();
}
printf("You've entered the students details. \n");
printavg();
system("PAUSE");
return 0;
}
void assigngrade()
{
if ((students[n].av_marks<=4) && (students[i].av_marks>3))
{
students[i].grade='A';
}
else if ((students[i].av_marks<=3) && (students[i].av_marks>2))
{
students[i].grade='B';
}
else if ((students[i].av_marks<=2) && (students[i].av_marks>1))
{
students[i].grade='C';
}
else if ((students[i].av_marks<=1) && (students[i].av_marks>=0))
{
students[i].grade='D';
}
}
void printavg() /* prints the average grade for a student */
{
for (i=0; i<N_student; i++)
{
printf ("Student Id=");
printf ("%s\n",students[i].id);
printf ("Student Name=");
printf ("%s\n",students[i].name);
printf ("Student Average marks=");
printf ("%.2f\n",students[i].av_marks);
printf ("Student Grade=");
printf ("%c\n",students[i].grade);
}
}
Right now the question is how do i sort according to date, oldest first?