Функции и массивы C ++ - ошибка C4700 в Visual Studios - PullRequest
0 голосов
/ 23 мая 2018

У меня вопрос по массивам и функциям.Вот инструкции, которые относятся к той части, которую я закончил:

В течение семестра студенты, изучающие курс информатики, сдают 4 теста. Чтобы подсчитать оценку за курс, отбрасывается наименьшая оценка по тесту.Для определения буквенной оценки используются только 3 верхние тестовые оценки. Используя массивы, создайте программу, которая использует данные, расположенные в файле Scores.txt, чтобы вернуть буквенную оценку для каждого учащегося следующим образом:

  1. Создайте функцию с именем drop_test (), которая определяет наименьшую оценку за каждого учащегося.

Поэтому, когда я пытаюсь отладить ее, я получаю сообщение об ошибке # C4700, в котором говорится, что использовалась неинициализированная переменная - "low"на линии, где я вызываю функцию drop_test.Может кто-нибудь мне помочь?Я очень потерян и не знаю, что делать.Спасибо.

{

#include<iostream>
#include<fstream>
#include<iomanip>
#include<string>

using namespace std;

//Prototypes.
void dropped_test(int low, int T1[], int T2[], int T3[], int T4[], int i);

int main() {
    //Declares
    ifstream fin;
    ofstream fout;
    string name[100];
    int T1[100], T2[100], T3[100], T4[100], low;
    int i = 0;
    int sumT;   //Sum of the test scores after dropped test
    int percent;
    char grade;
    int sumT1 = 0, sumT2 = 0, sumT3 = 0, sumT4 = 0, sumTotal = 0;   //Running sums of the test scores for each column


    //Open the files.
    fin.open("scores.txt");
    fout.open("grades.txt");

    //Test if files opened.
    if (fin) {
        cout << "Processing..." << endl;
        cout << endl;
    }
    else {
        cout << "ERROR ID107: File not found." << endl;
        cout << endl;
        system("pause");
        return 0;
    }

    //Remove the header.
    fin.ignore(100, '\n');

    //Input the data.
    while (!fin.eof()) {
        getline(fin, name[i], ',');
        fin >> T1[i];
        fin.ignore(5, ',');
        fin >> T2[i];
        fin.ignore(5, ',');
        fin >> T3[i];
        fin.ignore(5, ',');
        fin >> T4[i];
        fin.ignore();
    }

    //Calculate the lowest score.
    /*low = T1[i];
    if (low > T2[i])
        low = T2[i];
    if (low > T3[i])
        low = T3[i];
    if (low > T4[i])
        low = T4[i];*/

    //Dropped Test
    dropped_test(low, T1, T2, T3, T4, i);

    //Calculate the sum of the test scores.
    sumT = T1[i] + T2[i] + T3[i] + T4[i] - low;

    //Calculate the test grade.
    percent = sumT / 3;
    if (percent >= 90)
        grade = 'A';
    else if (percent >= 80)
        grade = 'B';
    else if (percent >= 70)
        grade = 'C';
    else if (percent >= 60)
        grade = 'D';
    else
        grade = 'F';

    //Calculate the running sums.
    sumT1 = sumT1 + T1[i];
    sumT2 = sumT2 + T2[i];
    sumT3 = sumT3 + T3[i];
    sumT4 = sumT4 + T4[i];
    sumTotal = sumTotal + sumT;

    cout << "Testing." << endl;

    //Close files.
    fin.close();
    fout.close();

    system("pause");
    return 0;
}

void dropped_test(int low, int T1[], int T2[], int T3[], int T4[], int i = 0) {
    low = T1[i];
        if (low > T2[i])
    low = T2[i];
        if (low > T3[i])
    low = T3[i];
        if (low > T4[i])
    low = T4[i];
        i++;
}

Ответы [ 2 ]

0 голосов
/ 23 мая 2018

Кажется, что low является выходной переменной, поэтому используйте int& low вместо int low

0 голосов
/ 23 мая 2018

вам нужно инициализировать переменную low, а также передать параметр по ссылке, если вы хотите изменить значение аргумента внутри функции.ниже обновлен код:

#include<iostream>
#include<fstream>
#include<iomanip>
#include<string>

using namespace std;

//Prototypes.
void dropped_test(int &low, int T1[], int T2[], int T3[], int T4[], int i);

int main() {
    //Declares
    ifstream fin;
    ofstream fout;
    string name[100];
    int T1[100], T2[100], T3[100], T4[100], low = 0;
    int i = 0;
    int sumT;   //Sum of the test scores after dropped test
    int percent;
    char grade;
    int sumT1 = 0, sumT2 = 0, sumT3 = 0, sumT4 = 0, sumTotal = 0;   //Running sums of the test scores for each column


    //Open the files.
    fin.open("scores.txt");
    fout.open("grades.txt");

    //Test if files opened.
    if (fin) {
        cout << "Processing..." << endl;
        cout << endl;
    }
    else {
        cout << "ERROR ID107: File not found." << endl;
        cout << endl;
        system("pause");
        return 0;
    }

    //Remove the header.
    fin.ignore(100, '\n');

    //Input the data.
    while (!fin.eof()) {
        getline(fin, name[i], ',');
        fin >> T1[i];
        fin.ignore(5, ',');
        fin >> T2[i];
        fin.ignore(5, ',');
        fin >> T3[i];
        fin.ignore(5, ',');
        fin >> T4[i];
        fin.ignore();
    }

    //Calculate the lowest score.
    /*low = T1[i];
    if (low > T2[i])
        low = T2[i];
    if (low > T3[i])
        low = T3[i];
    if (low > T4[i])
        low = T4[i];*/

    //Dropped Test
    dropped_test(low, T1, T2, T3, T4, i);

    //Calculate the sum of the test scores.
    sumT = T1[i] + T2[i] + T3[i] + T4[i] - low;

    //Calculate the test grade.
    percent = sumT / 3;
    if (percent >= 90)
        grade = 'A';
    else if (percent >= 80)
        grade = 'B';
    else if (percent >= 70)
        grade = 'C';
    else if (percent >= 60)
        grade = 'D';
    else
        grade = 'F';

    //Calculate the running sums.
    sumT1 = sumT1 + T1[i];
    sumT2 = sumT2 + T2[i];
    sumT3 = sumT3 + T3[i];
    sumT4 = sumT4 + T4[i];
    sumTotal = sumTotal + sumT;

    cout << "Testing." << endl;

    //Close files.
    fin.close();
    fout.close();

    system("pause");
    return 0;
}

void dropped_test(int &low, int T1[], int T2[], int T3[], int T4[], int i = 0) {
    low = T1[i];
        if (low > T2[i])
    low = T2[i];
        if (low > T3[i])
    low = T3[i];
        if (low > T4[i])
    low = T4[i];
        i++;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...