我的程序需要使用局部变量而不是全局变量。但是,当我尝试这样做时,我似乎找不到正确的参数来从 main 和函数来回传递数据。我不断收到一条错误消息,提示“int 的参数类型与 float 类型的参数不兼容”。请帮助我了解在这里做什么。谢谢你的时间,我很感激。
我试过用谷歌搜索错误代码,但只能找到关于我还没有学过的指针问题的答案/问题。我已经研究了几个小时,只是为了让变量在“int main”中工作,但无济于事。
//This program asks user how many grades there are,
//inputs grades, and displays median of said grades.
//"int main" is at the bottom of the program, preceded by
//variables, function headers, and a single array.
#include <iostream>
using namespace std;
void grdTaker(float [], int);
void sortArray(float[], int);
void median(float[], int);
//Main
int main()
{
//Variables
//int grdsCounted; //Number of grades from user.
const int arraySize = 20;
int grdsCounted; //Number of grades from user.
float grades[arraySize]; //Max grades that can be entered.
grdTaker(grdsCounted, grades[]);
sortArray(grades, grdsCounted);
median(grades, grdsCounted);
system("pause");
}
void grdTaker(float array[], int size) //Function gathers grades.
{
//const int arraySize = 20;
//int grdsCounted; //Number of grades from user.
//float grades[arraySize]; //Max grades that can be entered.
cout << "You may input up to 20 grades. \n";
cout << "First enter the number of grades you have: ";
cin >> grdsCounted;
while (grdsCounted > arraySize)
{
cout << "That is more than 20 grades, try again: \n";
cin >> grdsCounted;
}
cout << "Enter each grade: \n";
//requests how many grades there are and stores them in array
for (int grdCount = 0; grdCount < grdsCounted; grdCount++)
{
cin >> grades[grdCount];
}
};
void sortArray(float array[], int size) //Function sorts array values.
{
bool swap;
float temp;
do
{
swap = false;
for (int count = 0; count < (size - 1); count++)
{
if (array[count] > array[count + 1])
{
temp = array[count];
array[count] = array[count + 1];
array[count + 1] = temp;
swap = true;
}
}
} while (swap);
}
void median(float array[], int size) //Outputs the median of entered grades.
{
int med = size / 2;
int odd = med - 1;
cout << "The median grade is: ";
if (size % 2 == 1)
{
cout << array[med] << endl;
}
else
{
cout << (array[med] + array[odd]) / 2 << endl;
}
}