Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/152.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 奇数单元格的平均值?_C++ - Fatal编程技术网

C++ 奇数单元格的平均值?

C++ 奇数单元格的平均值?,c++,C++,对于我正在做的一个练习,我应该找出数组中奇数单元格中包含的项的平均值以及其他一些东西。找到奇数单元格的平均值是我唯一的问题。这是我的代码,我做错了什么?最后一个函数是奇数单元格平均函数。谢谢 #include <iostream> #include <iomanip> using namespace std; const int SIZE = 1000; int randoms[SIZE]; int sum2 = 0; int top = 0; int maximum

对于我正在做的一个练习,我应该找出数组中奇数单元格中包含的项的平均值以及其他一些东西。找到奇数单元格的平均值是我唯一的问题。这是我的代码,我做错了什么?最后一个函数是奇数单元格平均函数。谢谢

#include <iostream>
#include <iomanip>

using namespace std;

const int SIZE = 1000;
int randoms[SIZE];
int sum2 = 0;
int top = 0;
int maximum = 0;

int highest(int randoms[]);
int findsum(int randoms[]);
int average(int randoms[], int sum);
int oddavg(int randoms[]);

int main()
{
    int sum = 0;
    int top = 0;
    int avg = 0;
    int oddaverage = 0;


    for (int i = 0; i < SIZE; i++)
    {
        randoms[i] = (rand() % 5000 + 1);
        cout << randoms[i] << setw(10) << " ";
    }

    cout << endl << endl;
    cout << "The sum of the values in the array is ";

    sum = findsum(randoms);

    cout << sum << endl;

    cout << endl << endl;
    cout << "The highest value in the array is ";

    top = highest(randoms);

    cout << top << endl;

    cout << endl << endl;
    cout << "The average of all of the numbers in the array is ";

    avg = average(randoms, sum);

    cout << avg << endl;

    cout << endl << endl;
    cout << "The average of all of the numbers in the odd cells is ";

    oddaverage = oddavg(randoms);
}

int findsum(int randoms[])
{
    for (int i = 0; i < SIZE; i++)
    {
        sum2 += randoms[i];
    }
    return sum2;
}

int highest(int randoms[])
{
    for (int i = 0; i < SIZE; i++)
    {

        if (randoms[i] > maximum)
        {
            maximum = randoms[i];
        }
    }

    top = maximum;

    return top; 
}

int average(int randoms[], int sum)
{
    int avg = 0;

    for (int i = 0; i < SIZE; i++)
    {
        avg = (sum / SIZE);
    }

    return avg;
}

int oddavg(int randoms[])
{
    int avg = 0;
    int sum = 0;

    for (int i = 0; i < SIZE; i++)
    {
        if (randoms[i] / 2 == 1)
        {
            sum += randoms[i];
        }

    }
     avg = sum / SIZE;

     return avg;
}
#包括
#包括
使用名称空间std;
常数int SIZE=1000;
int随机数[大小];
int-sum2=0;
int-top=0;
int最大值=0;
最高整数(整数随机数[]);
int findsum(int randoms[]);
整数平均值(整数随机数[],整数和);
int-oddavg(int-randoms[]);
int main()
{
整数和=0;
int-top=0;
int平均值=0;
平均值=0;
对于(int i=0;iif(随机[i]%2==1)
您还需要计算奇数的数量。

应该是
if(randoms[i]%2==1)

您还需要计算奇数的数目。

randoms[i]/2==1
,只有当单元格值为
2
3
时,才会出现这种情况,这当然不是您需要做的

如果您需要使用赔率指数对单元格的值求和,则应为If
(i%2==1)
。如果您要查找奇数值(在任何单元格中),则应为If
If(randoms[i]%2==1)

请注意,
%
是返回整数除法的整数余数的操作


由于您计算的是平均值,您应该除以找到的元素数量,而不是总数。

randoms[i]/2==1
,只有当单元格值为
2
3
时,这才是正确的,这当然不是您需要做的

如果您需要使用赔率指数对单元格的值求和,则应为If
(i%2==1)
。如果您要查找奇数值(在任何单元格中),则应为If
If(randoms[i]%2==1)

请注意,
%
是返回整数除法的整数余数的操作

由于要计算平均值,所以应该除以找到的元素数量,而不是总数。

在这种情况下,进行奇偶测试(使用许多人建议的模)是完全多余的,因为循环不做任何其他事情

您可以使用2的步幅,从第一个奇数元素开始:

for (int i = 1; i < SIZE; i += 2)
{
   sum += randoms[i];
}
您甚至不必担心被零除=)

在这种情况下,执行奇偶测试(使用许多人建议的模)是完全冗余的,因为循环不做任何其他事情

您可以使用2的步幅,从第一个奇数元素开始:

for (int i = 1; i < SIZE; i += 2)
{
   sum += randoms[i];
}
你甚至不用担心被零除=)

intoddavg(intrandoms[])
{
int-cnt=0;
int平均值=0;
对于(int i=0;i
int-oddavg(int-randoms[])
{
int-cnt=0;
int平均值=0;
对于(int i=0;i
您应该查找奇数索引单元格中包含的数字的平均值,还是所有奇数值的平均值?您的代码正在尝试执行第二个操作,但您解释的是第一个。(您的代码第二步也不正确,因为您不想除以大小,而是想除以找到的东西的数量。您的if检查也不正确)您还应该累加到
long
中,您应该找到奇数索引单元格中包含的数字的平均值,还是所有奇数值的平均值?您的代码正在尝试执行第二个,但您解释的是第一个。(你的代码第二步也不正确,因为你不想除以大小,你想除以你找到的东西的数量。你的if检查也不正确)你也应该积累成一个
long
我真的不需要模。我以前做过这件事,但因为我使用“I++”,所以我完全忽略了“I++=2”我会的。非常感谢。如果你错过了,我还暗示你的平均值应该是
double
(或者
float
),而不是
int
。我真的不需要模。我以前做过这个,但是因为我使用“I++”工作,所以我完全错过了“I+=2”我会的。非常感谢。如果你错过了,我还暗示你的平均值应该是
双倍
(或
浮动
),而不是
int
int oddavg(int randoms[])
{
    int cnt = 0;
    int avg = 0;

    for (int i = 0; i < SIZE; i++)
    {
        if ( randoms[i] % 2 != 0 )
        {
            ++cnt; 
            avg += randoms[i];
        }

    }

     return ( cnt == 0 ? avg : avg / cnt );
}