okay here is my retry
Code:
/* Homework 12 */
#define FILENAME "students.dat"
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#include <string.h>
#define FILENAME2 "outstu.dat"
struct record
{char name[12]; int ex1, ex2, final, hw, ave, grade passfail[5];} record;
int main(void)
{
struct record s[50];
int nos=0, i=0;
struct record h[50]
FILE *grades
FILE *students;
/* Open file. */
void sort(record);
students=fopen(FILENAME, "r");
grades=fopen(FILENAME2, "w");
/*Read file. */
{
for(i=0; i<50; i++)
while (fscanf(students, "%s %i %i %i %i," s[i].name, s[i].ex1, s[i].ex2, s[i].final, s[i].hw)==5)
nos=1;
nos++
/*Determine Average for each Student */
s[i].ave=(s[i].ex1*0.2)+(s[i].ex2*0.2)+(s[i].final*0.3)+(s[i].hw*0.3)+0.5;
if(s[i].ave>=85) s[i].grade='A';
else
if(s[i].ave>=70) s[i].grade='B';
else
if(s[i].ave>=55) s[i].grade='C';
else
if(s[i].ave>=40) s[i].grade='D';
else
if(s[i].ave>=0) s[i].grade='F';
/*Determine if the student passed or failed*/
if(s[i].ave>=40)
strcpy(s[i].passfail, "pass");
else strcpy(s[i].passfail, "fail");
sort(s, nos);
for(i=0, i<nos, ++i);
fprintf(grades, "%11s %5i %5i %5i %c %4s \n", s[i].name, s[i].ex1, s[i].ex2, s[i].final, s[i].hw, s[i].grade, s[i].passfail);
/* Sorting Grades */
void sort(record s[], int nos);
{
int k, j, m, nos, s[50];
struct record hold;
for(k=0; k<=nos-2; k++);
m=k;
for(j=k+1; j<=nos-1; j++)
{
if(s[j] < s[m], ave);
m=j;
hold=s[m];
s[m]=s[k];
s[k]=hold;
}
}
return;
}
}