通过标准化//函数调整数组

问题描述 投票:0回答:1

正在研究此问题,并且在找出问题所在时遇到困难。

5表示列表中有五个值,即30、50,10、70和65。10是列表中的最小值,因此减去从列表中的每个值。

输入:5 30 50 10 70 65

我的输出:20 40 0 70 65

预期输出:20 40 0 60 55

我的代码:

#include <iostream>
using namespace std;

int MAX_ELEMENTS = 20;
int GetMinimumInt(int listInts[], int numVals);

int main() {
  cin >> MAX_ELEMENTS;
  int userVals[MAX_ELEMENTS];
  int i;

  // populating the variable
  for (i = 0; i < MAX_ELEMENTS; ++i) {
    cin >> userVals[i];
  }

  // output values
  for (i = 0; i < MAX_ELEMENTS; ++i) {
    cout << userVals[i] - GetMinimumInt(&userVals[i], MAX_ELEMENTS) << " ";
  }
  cout << endl;

  return 0;
}
int GetMinimumInt(int listInts[], int numVals) {
  int minValFun = listInts[1];  // smallest so far

  for (int i = 0; i < MAX_ELEMENTS; ++i) {
    if (listInts[i] < minValFun) {
      minValFun = listInts[i];
    }
  }
  return minValFun;
}
c++
1个回答
2
投票

由于参数错误,将在GetMinimumInt中发生超范围访问。

您将不必为数组偏移:您应该使用GetMinimumInt(userVals, MAX_ELEMENTS)而不是GetMinimumInt(&userVals[i], MAX_ELEMENTS)

int minValFun = listInts[1]; // smallest so far

在功能GetMinimumInt中应该是

int minValFun = listInts[0]; // smallest so far

以支持一元数组。

© www.soinside.com 2019 - 2024. All rights reserved.