Sie sind auf Seite 1von 9

#include<stdio.

h>

#include<math.h>

#define MAXSIZE 10

int getChoice();

void readArray(double score[], int n);

void showLetterGrades(double score[], int n);

void getLetterGrades(double score[], char grade[], int n);

void showStatistics(double score[], int n);

void getStats(double score[], int n, double *min, double *max, double *avg, double *stDev, double *mode, double
*median);

void SSort(double score[], int n);

void showRanks(double score[], int n);

void getRanks(double score[], int ranks[], int n);

void showDistribution(double score[], int n);

void getDistributions(char grade[], int n, double distribution[], int k);

int main (void)

int choice, i;

double score[MAXSIZE];

do

printf("\n 1. Read scores. ");

printf("\n 2. Convert scores to letter gradesand display a table of scores and letter grades. ");
printf("\n 3. Show statistics ( count, maximum, minimum, average, median, mode, standard deviation. ");

printf("\n 4. Rank students (first, second, third, etc). ");

printf("\n 5. Show grade distribution. ");

printf("\n 6. Exit");

printf("\n\n\n Please enter your choice: ");

choice = getChoice();

switch (choice)

case 1:

readArray(score, MAXSIZE);

break;

case 2:

showLetterGrades(score, MAXSIZE);

break;

case 3:

showStatistics(score, MAXSIZE);

break;

case 4:

showRanks(score, MAXSIZE);

break;

case 5:

showDistribution(score, MAXSIZE);

default:
printf("\n Wrong Choice. ");

} while (choice != 6);

int getChoice()

int choice;

scanf("%d", &choice);

return choice;

void readArray(double score[], int n)

int i;

printf("\n Enter the %d scores: \n",n);

for (i=0; i<n; i++)

scanf("%lf", &score[i]);

void showLetterGrades(double score[], int n)

int i;
char grade[n];

getLetterGrades(score, grade, n);

for (i=0; i<n; i++)

printf("\n The score is: %0.1f \t The grade is: %c ", score[i],grade[i]);

void getLetterGrades(double score[], char grade[], int n)

int i;

for (i=0; i<n; i++)

if (score[i]>=90) grade[i] = 'A';

else if (score[i]>=80) grade[i] = 'B';

else if (score[i]>=70) grade[i] = 'C';

else if (score[i]>=60) grade[i] = 'D';

else grade[i] = 'F';

void showStatistics(double score[], int n)

double min, max, avg, stDev, mode, median;

getStats(score, n, &min, &max, &avg, &stDev, &mode, &median);


printf("\n The minimum: %f", min);

printf("\n The maximum: %f", max);

printf("\n The average: %f", avg);

printf("\n The standard Deviation: %f", stDev);

printf("\n The mode: %f", mode);

printf("\n The median: %f", median);

void getStats(double score[], int n, double *min, double *max, double *avg, double *stDev, double *mode, double
*median)

int i, j, count, maxcount;

double sum;

sum = score[0];

*min = score[0];

*max = score[0];

for (i=1; i<n; i++)

if (score[i]<*min) *min = score[i];

if (score[i]>*max) *max = score[i];

sum = sum + score[i];

*avg = sum / n;
sum = 0.0;

for (i=0; i<n; i++)

sum = sum + pow((score[i]-*avg),2);

*stDev = sqrt(sum/n);

*mode = 0.0;

maxcount = 0;

for (i = 0; i < n; ++i)

int count = 0;

for (j = 0; j < n; ++j)

if (score[j] == score[i])

count++;

if (count > maxcount)

maxcount = count;

*mode = score[i];

SSort(score, n);

if (n%2==1)
*median = score[n/2];

else

*median = score[(n-1)/2];

void SSort(double score[], int n)

int i, j, min, t;

for (i=0; i<n; i++)

min = i;

for (j=i+1; j<n; j++)

if (score[j] < score[min])

min = j;

t = score[i];

score[i] = score[min];

score[min] = t;

void showRanks(double score[], int n)

int ranks[n], i;

getRanks(score, ranks, n);


for (i=0; i<n; i++)

printf("\n Score: %0.1f \t Rank: %d ", score[i], ranks[i]);

void getRanks(double score[], int ranks[], int n)

int i;

SSort(score, n);

for (i=0; i<n; i++)

ranks[i]=i+1;

void showDistribution(double score[], int n)

int i, k=5;

char LG[5]={'A','B','C','D','F'};

char grade[n];

double distribution[n];

getLetterGrades(score, grade, n);

getDistributions(grade, n, distribution,k);

for (i=0; i<5; i++)

printf("\n The grade: %c\t percentage: %0.2f Percent",LG[i], distribution[i]);


}

void getDistributions(char grade[], int n, double distribution[], int k)

int i, count[k];

for (i=0; i<k; i++)

count[i]=0;

for (i=0; i<n; i++)

if (grade[i]=='A') count[0]++;

if (grade[i]=='B') count[1]++;

if (grade[i]=='C') count[2]++;

if (grade[i]=='D') count[3]++;

if (grade[i]=='F') count[4]++;

for (i=0; i<5; i++)

distribution[i]= count[i]/(double)n*100;

Das könnte Ihnen auch gefallen