gpt4 book ai didi

c++ - 尝试调试和更正函数

转载 作者:太空宇宙 更新时间:2023-11-04 14:00:16 25 4
gpt4 key购买 nike

#include <iostream>
#include <string>
using namespace std;

// Declaration of the function indexvalue()
int *maxArr(int [], const int);

// Another function used to print out an error message
void
problem(string str) {
cout << str << endl;
exit(1);
}

const int Size = 10;

int main()
{
int a[Size] = {23, 45, 12, 76, 9, 131, 10, 8, 23, 4};
int *b, i;

string error1("Problem with maxArr(), wrong subscript");
string error2("Problem with maxArr(), output should be NULL");

// Call the function multiple times with different input
// Note the use of pointer arithmetic
if (maxArr(a,Size)!= a+5) problem(error1);
if (maxArr(a,Size-5)!= a+3) problem(error1);
if (maxArr(a+6,4)!= a+8) problem(error1);
if (maxArr(a,0)!= NULL) problem(error2);
// The function passed all the tests

cout << "The function passed all the tests in this program\n" << endl;
exit(0);
}

int *maxArr(int arr[], int size){
int max = 0;
int index = 0;

if ( size < 0)
return NULL;

for (int i = 0; i < size; i++) {
if (arr[i] > max )
{
max = arr[i];
index = i;
}
return arr + i;
}
}

maxArr() 的规范

该函数接受一个整数数组,以及元素的数量作为参数。该函数返回指向数组最大值的 int 地址。

我试图弄清楚 maxArr() 函数有什么问题,到目前为止我唯一纠正的是将 if(size < 0) 更改为 if (size <= 0) 以处理 null 情况,我不知道如何更正函数以解决 error1 消息。任何帮助将不胜感激。

最佳答案

这里有括号问题:

   for (int i = 0; i < size; i++) {
if (arr[i] > max )
{
max = arr[i];
index = i;
}
return arr + i;
}

您的返回在 for 循环内,因此您将在循环的第一次交互时返回。

没有使用index,你可能想把return语句移到主循环外,return arr + index;

关于c++ - 尝试调试和更正函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19612613/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com