#include <iostream>
#include <algorithm> // For std::sort
int N;
int i;
int choice;
double avg;
double med;
double total;
double smallest = 1000;
double largest = -1000;
void printGrades (double grades[], int size) {
std::cout<< "\nYour grades are: " ;
for (i=0; i<size; i++) {
std::cout << grades[i] << " ";
}
}
double average (double grades[],int size) {
double total = 0;
for (i=0; i<size; i++) {
total += grades[i];
avg = total / size;
}
return avg;
}
double median (double grades[], int size){
if (size % 2 == 0){
int x = ((size)/2);
med = (grades [x]+grades[x-1])/2;
}
else if (size % 2 !=0) {
int z = ((size/2)+.5);
med = grades[z];
}
return med;
}
double minimum (double grades[], int N) {
for (int i = 0; i < N; i++) {
if (grades [i] < smallest) {
smallest = grades [i];
}
}
return smallest;
}
double newAverage (double grades[], int size) {
for (i=0; i < size; i++) {
total += grades [i];
}
total -= minimum(grades, size);
double newaverage = total / (size-1);
return newaverage;
}
double maximum (double grades[], int N) {
for (int i = 0; i < N; i++) {
if (grades [i] > largest) {
largest = grades [i];
}
}
return largest;
}
int main (int argc, char**argv) {
std::cout << "\n--- GRADE ANALYSER ---\n";
std::cout << "How many grades do you want to input? ";
std::cin >> N;
if (std::cin.fail()) {
std::cout << "That wasn’t a valid grade!\n";
return 1; // end program early
}
double grades [N];
std::cout << "\nEnter your grades, separated by a space: \n";
for (i=0;i < N;i++) {
std::cin >> grades[i];
if (std::cin.fail()) {
std::cout << "That wasn’t a valid number!\n";
return 1; // end program early
}
}
do {
std::cout << "\n\nWhat do you want to do now? (enter number) \n1 - Show grades\n2 - Calculate Average\n3 - Show max grade\n4 - Show min. grade\n5 - Sort grades highest to lowest\n6 - Find median\n7 - Drop lowest grade and recalculate average\n8 - Exit\n------------\n";
std::cin >> choice;
if (choice == 1) {
printGrades(grades,N);
}
if (choice == 2) {
std::cout << "\nThe average grade is " << average(grades, N);
}
if (choice == 3) {
std::cout << "\nThe highest grade is: " << maximum(grades,N);
}
if (choice == 4) {
std::cout << "\nThe lowest grade is: " <<minimum(grades, N);
}
if (choice == 5) {
std::sort(grades, grades + N);
for (int i = 0; i < N; i++) {
std::cout << grades [i] << " ";
}
}
if (choice == 6) {
std::sort(grades, grades + N);
std::cout << "The median grade is " << median(grades, N);
}
if (choice == 7) {
std::cout << "Your new average is: " << newAverage(grades, N);
}
} while (choice !=8);
}