- 已关闭。**此问题为not reproducible or was caused by typos。当前不接受答案。
这个问题是由打字错误或无法再重现的问题引起的。虽然类似的问题在这里可能是on-topic,但这个问题的解决方式不太可能帮助未来的读者。
22分钟前就关门了。
Improve this question
当我试图调用我的函数时,我得到错误:
没有与"modifiedSortGPA"调用匹配的函数
void modifiedSortGPA(double, int, string, int); //function prototype
...
// my arrays
int netID[NUM_ELMTS]; // Original netID array
string major[NUM_ELMTS]; // Original major array
double GPA[NUM_ELMTS]; // Original GPA array
double sortedGPAbyGPA[NUM_ELMTS]; // GPA array, sorted by GPA
int sortedNetIDbyGPA[NUM_ELMTS];
string sortedMajorbyGPA[NUM_ELMTS];
for (int i = 0; i <= count; i++) //populating my arrays
{
GPA[i] = sortedGPAbyGPA[i];
netID[i] = sortedNetIDbyGPA[i];
major[i] = sortedMajorbyGPA[i];
}
modifiedSortGPA(sortedGPAbyGPA, sortedNetIDbyGPA, sortedMajorbyGPA, count); //function call in main
...
void modifiedSortGPA(double array1[], int array2[], string array3[], int size) //function
{
int startScan, minIndex, minValue;
for (startScan = 0; startScan < (size - 1); startScan++)
{
minIndex = startScan;
minValue = array1[startScan];
for(int index = startScan + 1; index < size; index++)
{
if (array1[index] < minValue)
{
minValue = array1[index];
minIndex = index;
}
}
array1[minIndex] = array1[startScan];
array1[startScan] = minValue;
}
}
我试着确保在我的原型、函数调用和函数定义中没有拼写错误,我期望我的函数打印排序后的数组。
1条答案
按热度按时间enyaitl31#
我试图确保在我的原型、函数调用和函数定义中没有拼写错误。
然而,你没有成功,因为你的函数的 * 声明 * 与你的函数的 * 定义 * 不匹配。你传递给函数的值与 * 声明 * 不匹配,因此出现了错误。
在声明中,第一个参数采用单个
double
,第二个参数采用单个int
,第三个参数采用单个string
。但是,在您的定义中,第一个参数采用
double[]
数组,第二个参数采用int[]
数组,第三个参数采用string[]
数组。您需要修复声明以匹配定义,例如:
顺便说一句:数组是0索引的,这意味着第一个索引是0,最后一个索引比元素计数小1。但是用数据填充数组的
for
循环超出了数组末尾1个元素,这是 * 未定义的行为 *。它试图访问count
处的元素作为最后一个索引,但最后一个索引是count-1
。您需要修复此问题,方法是在循环条件中使用<
而不是<=
,例如: