Currently trying to run the program I've written and getting the error "Run-Time Check Failure #2 - Stack around the variable 'midtermgrade' was corrupted."
I have no idea what to do to fix it, very new to programming and got thrown into a C++ course that I certainly did not have the background for.
Using Visual Studio 2017.
Code is supplied below.
#include <iomanip>
#include <iostream>
#include <fstream>
#include <string> 
using namespace std;
double mean(int v[], int size);
// PRE: size of array > 0
// POST: return average of values in array
double stddev(int v[], int size, double m);
// PRE: size of array > 0, 0 <= m <= 100
// POST: return standard deviation of values in array with mean m
char letter(int score, double m, double s);
// PRE: 0 <= score, m, s <= 100
// POST: return letter grade for score with mean m and standard deviation s
string code(string id, string lastname, string firstname);
// PRE: id is seven digit identification
// POST: return code of first letter of last name, first letter of first name, last two digits of id
int main()
{
    ifstream fin;
    ofstream fout;
    fin.open("grades.txt");
    fout.open("grades.txt");
    const int CAPACITY = 25;            // capacity of the array
    string codes[CAPACITY];             // array of id codes
    int midterms[CAPACITY];             // array of midterm grades
    int finals[CAPACITY];               // array of final grades
    string id;                          // 6-digit id code
    string lastname;
    string firstname;                       // Student's year of school
    int midterm;
    int final;
    string idcode;
    double finalmean;                   // Average grade on the final
    double finalstddev;                 // Standard deviation among final grades
    double midtermmean;                 // Average grade on the midterm
    double midtermstddev;               // Standarn deviation among midterm grades
    char finalgrade[CAPACITY];          // An array of the letter grades for the final
    char midtermgrade[CAPACITY];        // An array of the letter grades for the midterm
    int ct = 0;
    while (ct < CAPACITY && fin >> id >> lastname >> firstname >> midterm >> final)
    {
        midterms[ct] = midterm;
        finals[ct] = final;
        idcode = code(id, lastname, firstname);
        codes[ct] = idcode;
        ++ct;
    }
    finalmean = mean(finals, CAPACITY);
    midtermmean = mean(midterms, CAPACITY);
    finalstddev = stddev(finals, CAPACITY, finalmean);
    midtermstddev = stddev(midterms, CAPACITY, midtermmean);
    for (int i = 0; i <= CAPACITY; i++)
    {
        finalgrade[i - 1] = letter(finals[i - 1], finalmean, finalstddev);
        midtermgrade[i - 1] = letter(midterms[i - 1], midtermmean, midtermstddev);
    }
    fout << "Grade Calculations" << endl << "By ----" << endl;
    for (int i = 1; i <= CAPACITY; i++)
    {
        fout << setprecision(1);
        fout << setw(15) << codes[i - 1] << setw(15) << midterms[i - 1]
            << midtermgrade[i - 1] << setw(15) << finals[i - 1]
            << finalgrade[i - 1] << endl;
    }
    fout << endl << endl;
    fout << "The class mean for the midterm exam was a " << midtermmean << endl;
    fout << "The standard deviation amongst the midterm exams was +/- " << midtermstddev << endl;
    fout << endl << endl;
    fout << "The class mean for the final exam was a " << finalmean << endl;
    fout << "The standard deviation amongst the final exams was +/- " << finalstddev << endl;
    fin.close();
    fout.close();
    return 0;
}
string code(string id, string lastname, string firstname)
// PRE: id is seven digit identification
// POST: return code of first letter of last name, first letter of first name, last two digits of id
{
    char firstletterfirst = firstname[0];
    char firstletterlast = lastname[0];
    char fifthdigitid = id[4];
    char sixthdigitid = id[5];
    string idcode = { firstletterfirst, firstletterlast, fifthdigitid, sixthdigitid };
    return idcode;
}
double mean(int v[], int size)
// PRE: size of array > 0
// POST: return average of values in array
{
    int sum = 0;
    for (int i = 1; i <= size; i++)
    {
        sum = sum + v[i - 1];
    }
    double mean = sum / size;
    return mean;
}
double stddev(int v[], int size, double m)
{
    double sumofsquares = 0;
    double spread[25];
    double var;
    double stddev;
    for (int i = 1; i < size; i++)
    {
        spread[i - 1] = (v[i - 1] - m)*(v[i - 1] - m);
        sumofsquares = sumofsquares + spread[i - 1];
    }
    var = sumofsquares / 25;
    stddev = sqrt(var);
    return stddev;
}
char letter(int score, double m, double s)
// PRE: 0 <= score, m, s <= 100
// POST: return letter grade for score with mean m and standard deviation s
{
    char grade;
    if (score < (m - (1.5 * s)))
        grade = 'E';
    else if (score >= (m - (1.5 * s)) && score < (m - (0.5*s)))
        grade = 'D';
    else if (score >= (m - s) && score < m)
        grade = 'C';
    else if (score >= (m+(0.5*s)) && score < (m + 1.5*s))
        grade = 'B';
    else
        grade = 'A';
    return grade;
}
 
    