C++ 需要我的平均计算器代码的建议吗

C++ 需要我的平均计算器代码的建议吗,c++,C++,你好 我需要以下代码的帮助。我在计算平均数方面有问题。 代码的工作方式与计算第二个条目的平均值时所期望的一样 我突出显示了下图中未加起来的平均值。奇怪的是,平均数只在第二个条目上没有加起来 #include <iostream> using namespace std; float snelheid[][50] = {{}}; float lading[] = {}; float snelheidGem[] = {0}; int ladingNo = 1; int snelhei

你好

我需要以下代码的帮助。我在计算平均数方面有问题。 代码的工作方式与计算第二个条目的平均值时所期望的一样

我突出显示了下图中未加起来的平均值。奇怪的是,平均数只在第二个条目上没有加起来

#include <iostream>

using namespace std;

float snelheid[][50] = {{}};
float lading[] = {};
float snelheidGem[] = {0};
int ladingNo = 1;
int snelheidToets = 1;

int main()
{
    cout << "Hoeveel ladings word getoets?: ";
    cin >> ladingNo;

    for (int i = 0; i < ladingNo; i++)
    {
        int n = i + 1;
        if (n == 1 || n == 8 || n > 19)
        {
            cout <<"Wat was die " << n << "st lading?: ";
            cin >> lading[i];
            cout <<"Hoeveel skote was geskiet vir die "<< n << "st lading?: ";
            cin >> snelheidToets;
            snelheidGem[i] = {0};
            for (int t = 0; t < snelheidToets; t++)
            {
                int m = t + 1;
                if (m == 1 || m == 8 || m > 19)
                {
                    cout <<"Wat was die spoed van die " << m << "st skoot?: ";
                    cin >> snelheid[i][t];
                }
                else
                {
                    cout <<"Wat was die spoed van die " << m << "de skoot?: ";
                    cin >> snelheid[i][t];
                }
                snelheidGem[i]=snelheidGem[i]+snelheid[i][t];
            }
            snelheidGem[i] = snelheidGem[i]/snelheidToets;
            cout << snelheidGem [i] << endl;
            cout << endl;
        }
        else
        {
            cout <<"Wat is die " << n << "de lading?: ";
            cin >> lading[i];
            cout <<"Hoeveel skote was geskiet vir die "<< n << "de lading?: ";
            cin >> snelheidToets;
            snelheidGem[i] = {0};
            for (int t = 0; t < snelheidToets; t++)
            {
                snelheid[i][t] = {0};
                int m = t + 1;
                if (m == 1 || m == 8 || m > 19)
                {
                    cout <<"Wat was die spoed van die " << m << "st skoot?: ";
                    cin >> snelheid[i][t];
                }
                else
                {
                    cout <<"Wat was die spoed van die " << m << "de skoot?: ";
                    cin >> snelheid[i][t];
                }
                snelheidGem[i]=snelheidGem[i]+snelheid[i][t];
                cout << snelheid[i][t] << " snelheid" << endl;
                cout << snelheidGem[i] << " gemiddeld" << endl;

            }
            snelheidGem[i] = snelheidGem[i]/snelheidToets;
            cout << snelheidGem [i] << endl;
            cout << endl;

        }

    }

    return 0;
}
#包括
使用名称空间std;
float snelheid[][50]={{};
浮动提货[]={};
float snelheidGem[]={0};
int ladinno=1;
int snelheidToets=1;
int main()
{
cout>ladinno;
对于(int i=0;i19)
{
cout在这一行:

float snelheidGem[] = {0};
您正在创建一个大小为1的数组,但随后正在索引元素,如
snelheidGem[1]
snelheidGem[2]
等,这些元素调用未定义的行为(UB)。UB意味着任何事情都可能发生,包括有时给出正确的平均值,但有时不给出正确的平均值

您可以给它一个足够大的尺寸:

float snelheidGem[50] = {0};
或者更好的方法是使用
std::vector
,您可以通过执行
push_back
向其添加元素

请注意,您在以下方面也有相同的问题:

float lading[] = {};
在这一行:

float snelheidGem[] = {0};
您正在创建一个大小为1的数组,但随后正在索引元素,如
snelheidGem[1]
snelheidGem[2]
等,这些元素调用未定义的行为(UB)。UB意味着任何事情都可能发生,包括有时给出正确的平均值,但有时不给出正确的平均值

您可以给它一个足够大的尺寸:

float snelheidGem[50] = {0};
或者更好的方法是使用
std::vector
,您可以通过执行
push_back
向其添加元素

请注意,您在以下方面也有相同的问题:

float lading[] = {};

欢迎!最好是注释你的代码或者至少使用变量名来使用英文名称,这样我们就可以理解你的代码。你不幸运的是你的代码甚至编译。普通C++数组是固定大小的。当你声明它们时,你必须指定一个常数大小,然后再改变大小。[] = {}
创建零元素或一元素数组,因此尝试使用它们会导致很多问题。创建函数。不要在函数main中执行所有操作。如果将程序拆分为类和函数,它将变得更加清晰。您好,非常感谢。我将按照您的建议,将程序拆分为类和函数。我将定义数组大小,看看是否有效。欢迎!最好对代码进行注释,或者至少对变量名使用英文名称,这样我们就可以理解您的代码。您是(un)幸运的是,你的代码甚至编译。普通C++数组是固定大小的。当你声明它们时,你必须指定一个常数大小,然后改变大小。创建零元素或一元素数组,因此尝试使用它们会导致很多问题。创建函数。不要在函数main中执行所有操作。如果将程序拆分为类和函数,它将变得更加清晰。您好,非常感谢。我将按照您的建议,将程序拆分为类和函数。我将定义数组大小,看看是否有效。没问题,很乐意帮忙:如果你的答案对你有用的话,考虑一下答案。没问题,很乐意帮忙。