首页 > 解决方案 > 需要关于我的平均计算器代码的建议

问题描述

再会,

我需要以下代码的帮助。我在计算平均值时遇到问题。该代码按预期工作,用于计算第二个条目的平均值。

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

#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;
}

平均计算

标签: c++

解决方案


在这条线上:

float snelheidGem[] = {0};

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

你可以给它足够大的尺寸:

float snelheidGem[50] = {0};

或者更好的是,使用 a std::vector,您可以通过执行向其中添加元素push_back

请注意,您有同样的问题:

float lading[] = {};

推荐阅读