想知道我对这个程序做错了什么?

时间:2018-06-15 04:19:20

标签: c++ arrays

我正在努力让该计划从4季度开始,以及2016年和2017年的2列。每个季节的输入都是两年的降雨量。允许我输入冬季的数字,然后停止,并且计算不正确。关于我做错了什么的任何帮助?

#include <iostream>
#include <string>

using namespace std;

void Read(double rainfall[][4], int row);
void Calculate(double rainfall[][4], int row);
void Write(double rainfall[][4], int row);

int main()
{
    double rainfall[2][4];
    int row = 2;
    Read(rainfall, row);
    Calculate(rainfall, row);
    Write(rainfall, row);
}

void Read(double rainfall[][4], int row)
{
    for (int i = 0; i < row - 1; i++)
    {
        if (i == 0)
            cout << "Enter rainfall for Winter: " << endl;
        else if (i == 1)
            cout << "Enter rainfall for Spring: " << endl;
        else if (i == 2)
            cout << "Enter rainfall for Summer: " << endl;
        for (int j = 0; j < 2; j++)
        {
            cout << j + 1 << " : " << endl;
            cin >> rainfall[i][j];
        }
    }
}

void Calculate(double rainfall[2][4], int row)
{
    int i, j;
    double row_sum;
    for (i = 0; i < row; i++)
    {
        row_sum = 0;
        for (j = 0; j < 4; j++)
        {
            row_sum = row_sum + rainfall[i][j];
        }
        rainfall[i][4] = row_sum;
    }

    double col_sum;
    for (j = 0; j < 4; j++)
    {
        col_sum = 0;
        for (i = 0; i < row - 1; i++)
        {
            col_sum = col_sum + rainfall[i][j];
        }
        rainfall[2][j] = col_sum;
    }
}

void Write(double rainfall[][4], int row)
{
    int i, j;
    for (i = 0; i < row; i++)
    {
        for (j = 0; j < 4; j++)
            cout << rainfall[i][j] << " ";
            cout << endl;

    }
}

1 个答案:

答案 0 :(得分:2)

更改此行

for (int i = 0; i < row - 1; i++)

for (int i = 0; i < row; i++)

在C ++中,你应该使用std :: vector或std :: array来避免使用C样式数组,这样当你越过你的数组时我会得到更好的帮助,我认为这些数据发生在更多的地方而不是一个。