Code:
/* Code by
I don't think it compiles anymore it just too but I just make too many mistakes.
run on csp03 machine*/
#include <stdio.h>
//#include "constants.h"
#define NUMBERofSTUDENTS 3
#define EXAMSCORES 4
double averagexam( int [][EXAMSCORES], int, int );
double studentavg( int [], int);
void printarray(int grades[][EXAMSCORES], int , int);
//double averageall(const int[][EXAMSCORES], int,int );
void bubblesort( int[][EXAMSCORES], int, int);
//void initialScores(int[][EXAMSCORES]);
int main(void){
int exams;
int students;
int scores[NUMBERofSTUDENTS][EXAMSCORES]=
{{77,68,86,73},
{96,87,89,78},
{70,90,86,81}};
//initialScores(scores);
for(exams=0;exams<EXAMSCORES;exams++){
printf("the avg grade for exam %d is%.2f\n",
exams, averagexam(scores, NUMBERofSTUDENTS, exams));
}
for(students=0;students<NUMBERofSTUDENTS;students++){
printf("the avg for student %d is %.2f\n",
students, studentavg(scores[students], EXAMSCORES));
}
//printf("The avg for all the test/students is %d\n",
// averageall(scores, NUMBERofSTUDENTS, EXAMSCORES));
for(exams=0;exams<EXAMSCORES;exams++){
bubblesort(scores, NUMBERofSTUDENTS, exams);
}
printarray(scores, NUMBERofSTUDENTS, EXAMSCORES);
return 0;
}
double averagexam( int setofexams[][EXAMSCORES], int students, int
exams)
{
int i;
int total=0;
for (i=0;i<students;i++){
total += setofexams[i][exams];
}
return (double) total/students;
}
double studentavg( int grades[], int tests){
int i;
int total=0;
for(i=0;i<tests;i++){
total+=grades[i];
}
return (double) total/tests;
}
/*double averageall(const grades[][EXAMSCORES], int rows, int colm){
int i;
int j;
int total;
for(i=0;i<rows;i++){
for(j=0;j<colm;j++){
total+=grades[i][j];
}
}
return(double) total/(rows*colm);
}
void initialScores(int scores[NUMBERofSTUDENTS][EXAMSCORE]){
int i;
int j;
for (i=0;i<NUMBERofSTUDENTS;i++){
for (j=0;j<EXAMSCORES;j++){
scanf("%d", &scores[i][j]);
}
}
}
*/
void bubblesort( int a[][EXAMSCORES],int students, int exams){
int i;
int j;
int temp;
for (i=0;i<students;i++)
{
for(j=0;j<students-i-1;j++){
if(a[i][exams] > a[i][exams+1])
{
temp=a[i][exams];
a[i][exams]=a[i][exams+1];
a[i][exams+1]= temp;
}
}
}
}
void printarray(int grades[][EXAMSCORES], int pupils, int tests)
{
int i;
int j;
for(i=0;i<pupils;i++)
{
printf("\n");
for(j=0;j<tests;j++){
printf("%-5d", grades[i][j]);
}
}
}