【问题标题】:i want to find maximum, minimum and average but it assigns me something for 0我想找到最大值、最小值和平均值,但它为我分配了 0
【发布时间】:2020-01-14 23:04:31
【问题描述】:

我尝试写入一个大于 54 的数字数组。然后相应地输出其总和、平均值、最大值和最小值。我仍然尝试做-虽然通过但也失败了..(但我总是得到0,我该如何解决? 谢谢!

{
    int arr_first [10];
    int min = arr_first[0];
    int max = arr_first[0];
    int sum = 0;
    int aritm_mean = 0;
    int number;
    int maxArrayNumber = 54;

    cout << "Fill the array (10 numbers): " << endl;

    for ( int i = 0; i < 10;  ) {
         cin >> number;

        if ( number < maxArrayNumber ) {
            arr_first[number];
            i++;
        }
    }


    for ( int j = 0; j < 10;  ) {
        sum = sum + arr_first[number];
        cout << "Sum = " << sum << endl;
        j++;
    }

    for ( int j = 0; j < 10; j++ ) {
        sum += arr_first[number];
        aritm_mean = sum / 10;
    }
    cout << "Arithmetic mean = " << aritm_mean << endl;


    for ( int j = 0; j < 10; j++ ) {
        if ( max >= arr_first[0] ) {
            max = arr_first[number];
        }
    }
   cout << "Max number = " << max << endl;

    for ( int j = 0; j < 10; j++ ) {
        if ( min <= arr_first[0] ) {
            min = arr_first[number];
        }
    }
   cout << "Min number = " << min << endl;
 }

【问题讨论】:

  • 使用你的调试器
  • 注意:除了单独处理输入之外,您似乎没有在任何地方使用该数组。这意味着你不需要它。您可以计算用户提供的几乎所有内容。新数字是否小于最小值?这是新的最小值。是否大于最大值?这是新的最大值。将其添加到运行总和中,完成后将其除以输入数以获得平均值。没有在阵列上浪费内存,一个循环完成所有工作。您不编写的代码没有错误,因此让事情尽可能简单符合您的最大利益。

标签: c++ arrays minimax


【解决方案1】:

您至少需要修复可能的越界访问:

for ( int i = 0; i < 10;  ) {
     cin >> number;

    if ( number < maxArrayNumber ) {
        arr_first[number];    //<-- possible out of bound access
        i++;
    }
}

越界访问,应通过以下方式修复:

arr_first[i] = number; 

【讨论】:

  • 如果我拿走 i++ 那么循环将是永恒的
  • @Yksisarvinen 是的,for 循环本身不会像往常一样增加 i
【解决方案2】:

好的,这段代码有很多问题。 你的第一个循环应该是这样的:

for (int i = 0; i < 10;i++ ) {
cin >> number;

if (number < maxArrayNumber) {
    arr_first[i]=number;
}

你必须像那样使用 i++。 之后你不应该把“总和”放在循环中!

    cout << "Sum = " << sum << endl;

这个应该在那个循环之外。

对你来说最大和最小:

if (arr_first[j] > max )

应该是这样的。你把它倒过来写了

我很抱歉我说得不好。

【讨论】:

    猜你喜欢
    • 2017-03-08
    • 2016-12-29
    • 1970-01-01
    • 2021-01-15
    • 1970-01-01
    • 1970-01-01
    • 2015-01-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多