Я не знаю, как исправить этот код ошибки: Ошибка: функция не принимает 5 аргументов и ошибка: слишком мало аргументов при вызове функции.

#visual-c

#visual-c

Вопрос:

 // Description: This program calculates the average of a group of five test scores where the group is dropped.

#include <iostream>
using namespace std;

void getScore(double);
void findLowest(double, double, double, double, double, double);
void calcAverage(double, double, double, double, double, double);



int main()
{
    double ix, iy, iz, iw, ib;


    getScore(ix);
    getScore(iy);
    getScore(iz);
    getScore(iw);
    getScore(ib);

    calcAverage(ix, iy, iz, iw, ib);

    return 0;
}

void getScore(double score)
{
    cout << "What is your score?";
    cin >> score;
    if (score < 0)
    {
        cout << "Error";
        exit(0);
    }
}

void findLowest(double ba, double bb, double bc, double bd, double be, double exclude)
{
    if (ba < bb amp;amp; ba < bc amp;amp; ba < bd amp;amp; ba < be)
        exclude = ba;
    else if (bb < ba amp;amp; bb < bc amp;amp; bb < bd amp; bb < be)
        exclude = bb;
    else if (bc < ba amp;amp; bc < bb amp;amp; bc < bd amp;amp; bc < be)
        exclude = bc;
    else if (bd < ba amp;amp; bd < bb amp;amp; bd < bc amp;amp; bd < be)
        exclude = bd;
    else
        exclude = be;

}

void calcAverage(double aa, double ab, double ac, double ad, double ae, double drop)
{
    double average;
    findLowest(aa, ab, ac, ad, ae, drop);
    average = (aa   ab   ac   ad   ae - drop) / 4;
    cout << "The test score we are dropping is " << drop << endl;
    cout << "Your average is " << average << endl;
}
  

это говорит о том, что у меня недостаточно аргументов в строке 35 (calcAverage в int main), и когда я ввожу другую переменную, это говорит о том, что все мои i в main больше не инициализированы. Я очень смущен и не понимаю, почему это происходит

Ответ №1:

Вы передаете 5 аргументов при вызове, но calcaverage принимает 6 аргументов, верно!

Комментарии:

1. Я пытался добавить переменную ir с ее помощью, а затем она сообщает мне: «неинициализированная локальная переменная «ix»» строка 29, и я тоже не уверен, о чем это

Ответ №2:

Прототипом функции для calcAverage() является это:

 void calcAverage(double, double, double, double, double, double);
//Note 6 arguments.
  

Вы вызываете это следующим образом:

 calcAverage(ix, iy, iz, iw, ib); //Note 5 arguments
  

Следовательно, компилятор жалуется на меньшее количество аргументов, чем ожидалось.
Кроме того, все эти переменные:

 double ix, iy, iz, iw, ib;
  

Все эти переменные не инициализированы, и, следовательно, в функцию передаются неопределенные значения. Это могут быть любые значения между минимальным двойным и максимальным двойным диапазоном.