Grade Analyzer

#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);
}