行の合計の結果は正しいですが、列の合計は3 x4配列に対して間違った結果をもたらします

Blazer234

行と列の合計が個別にカウントされ、行は正常に表示されるプログラムを作成しようとしていますが、列は奇妙な結果をもたらしています。正しい結果は次のようになります(マトリックスの例)

9 1 2 4
2 2 8 0
3 3 3 3
Sum of row 0 is 16
Sum of row 1 is 12
Sum of row 2 is 12
Sum of column 0 is 14
Sum of column 1 is 6
Sum of column 2 is 13
Sum of column 3 is 7

しかし、私のものは

Sum of row 0 is 16
Sum of row 1 is 12
Sum of row 2 is 12
Sum of column 0 is 565359518
Sum of column 1 is 32772
Sum of column 2 is 13
Sum of column 3 is 7
#include <iostream>

using namespace std;

int main()
{

    int value[3][4];
    int sum = 0;
    int row, col;
    int i, j;

    for (int i = 0; i < 3; i++) {
        for (int j = 0; j < 4; j++) {
            cout << "Enter a value : " << endl;
            cin >> value[i][j];
        }
    }
    cout << "Value of the array: " << endl;
    for (int i = 0; i < 3; i++) {
        for (int j = 0; j < 4; j++) {
            cout << value[i][j] << " ";
        }

        cout << endl;
    }

    void row_sum(int value[i][j]);
    {
        int i, j, sum = 0;

        for (i = 0; i < 3; i++) {
            for (j = 0; j < 4; j++) {

                sum = sum + value[i][j];
            }

            cout
                << "Sum of the row "
                << i << " is " << sum
                << endl;

            sum = 0;
        }
        void col_sum(int value[i][j]);
        {
            int i, j, sum = 0;

            for (i = 0; i < 4; i++) {
                for (j = 0; j < 4; j++) {

                    sum = sum + value[j][i];
                }

                cout
                    << "Sum of the column "
                    << i << " is " << sum
                    << endl;

                sum = 0;
            }
        }

        return 0;
    }
}

(元々はi = 3でしたが、コードの問題だと思ったので4に変更しましたが、それでも列に奇妙な結果が表示されます。)

マイケル・ドーガン

私はすべきでないことをするつもりですが、あなたはこれに十分な努力を払ったので、問題がどこにあるのかをあなたに示したいと思います。

#include <iostream>

using namespace std;

// Use Constants to declare the size of your array to make it easier to iterate in loops.
// Also allows the compiler to know at compile-time the array sizes of functions.
const int ColSize = 4;
const int RowSize = 3;


// Forward declare functions here so that main() knows what they are.
void col_sum(int value[RowSize][ColSize]);
void row_sum(int value[RowSize][ColSize]);

int main()
{
    // Replace those nasty magic number 3 and 4s here with constants
    int value[RowSize][ColSize];
    // Notice I have removed all the unused vars here (i,j,sum, etc.)

    // Replace magic numbers
    for (int i = 0; i < RowSize; i++) {
        for (int j = 0; j < ColSize; j++) {
            cout << "Enter a value : " << endl;
            cin >> value[i][j];
        }
    }

    cout << "Value of the array: " << endl;

    // Replace magic numbers
    for (int i = 0; i < RowSize; i++) {
        for (int j = 0; j < ColSize; j++) {
            cout << value[i][j] << " ";
        }

        cout << endl;
    }

    // Actually call the functions...
    row_sum(value);
    col_sum(value);

    return 0;
}

// Make actual functions to be called using our constants.
void row_sum(int value[RowSize][ColSize])
{
    // Notice I have removed all the repeated vars here (i,j,sum, etc.)
    // They are all declared within the for loops

    // Replace magic numbers
    for (int i = 0; i < RowSize; i++) {

        int sum = 0;  // Moved the sum 0 here as we only need it once.
        for (int j = 0; j < ColSize; j++) {
            sum += value[i][j];
        }

        cout
            << "Sum of the row "
            << i << " is " << sum
            << endl;

    }
}

void col_sum(int value[RowSize][ColSize])
{
    // Notice I have removed all the repeated vars here (i,j,sum, etc.)
    // They are all declared within the for loops

    // Replace magic numbers
    for (int i = 0; i < ColSize; i++) {
        int sum = 0;  // Moved the sum 0 here as we only need it once.
    
        for (int j = 0; j < RowSize; j++) {
            sum = sum + value[j][i];
        }

        cout
            << "Sum of the column "
            << i << " is " << sum
            << endl;
    }
}

定数によって、forループのサイズの変更、メモリの管理、およびコードの読み取りがはるかに簡単になることに注目してください。関数がどのように宣言され、使用されるかも参照してください。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

合計の平均結果が正しくないのはなぜですか?

分類Dev

ソート配列は間違った結果をもたらします

分類Dev

Sparkでの結合は間違った結果を出力しますが、マップ側の結合は正しいです

分類Dev

「a」から「b」の範囲の整数の合計は、大きな入力に対して誤った結果をもたらします

分類Dev

配列の合計から結果を取得しようとしています

分類Dev

$ facetを使用せずに、2つのMongoDB集計パイプラインクエリの結果を結合し、結合された結果に対して別の集計クエリを実行するにはどうすればよいですか?

分類Dev

複数の行を合計しますが、結果の行数は保持します

分類Dev

Eloquent ORM laravelで列の行の合計に関して最良の結果を照会していますか?

分類Dev

パンダは、グループ結果のすべての列を1つの結果に合計します

分類Dev

配列内のn個の合計はx個であり、結果のサブセットを作成します

分類Dev

削減のためのOpenMP並列は間違った結果をもたらします

分類Dev

このコードが大きな配列に対して正しい結果をもたらさないのはなぜですか?

分類Dev

MySQLは、StudentNumberでグループ化された日付合計を使用して結合します。行結合結果が0の場合でも値を返したい

分類Dev

GROUP BYMONTHは間違った結果をもたらします

分類Dev

Timedelta操作は間違った結果をもたらします

分類Dev

JqueryDatatableの列の合計が無効な結果を示しています

分類Dev

C ++ openmp並列計算は間違った結果を計算します

分類Dev

MySQLの二重左結合が結果を2倍にし、列の合計結果を変更します

分類Dev

Javaの:組み合わせソート関数は、間違った結果を計算します

分類Dev

単純な計算の値がJavaで間違った結果をもたらすのはなぜですか?オーバーフローしますか?

分類Dev

LINQは、合計された列がゼロでない場合にのみ行を合計します

分類Dev

OpenMPの崩壊は間違った結果をもたらします

分類Dev

Timedeltaとの時差は間違った結果をもたらします

分類Dev

Pythonのreplace関数は間違った結果をもたらします

分類Dev

間違った最大合計サブ配列(kadaneのアルゴリズム)を返しますが、最大合計は正しい

分類Dev

合計時間の計算式で間違った結果が生成されるのはなぜですか?

分類Dev

MDX結果の合計が間違っています

分類Dev

Apache Commons Math:三重対角行列の固有分解は間違った結果をもたらします

分類Dev

マルチスレッドの合計は誤った結果をもたらします

Related 関連記事

  1. 1

    合計の平均結果が正しくないのはなぜですか?

  2. 2

    ソート配列は間違った結果をもたらします

  3. 3

    Sparkでの結合は間違った結果を出力しますが、マップ側の結合は正しいです

  4. 4

    「a」から「b」の範囲の整数の合計は、大きな入力に対して誤った結果をもたらします

  5. 5

    配列の合計から結果を取得しようとしています

  6. 6

    $ facetを使用せずに、2つのMongoDB集計パイプラインクエリの結果を結合し、結合された結果に対して別の集計クエリを実行するにはどうすればよいですか?

  7. 7

    複数の行を合計しますが、結果の行数は保持します

  8. 8

    Eloquent ORM laravelで列の行の合計に関して最良の結果を照会していますか?

  9. 9

    パンダは、グループ結果のすべての列を1つの結果に合計します

  10. 10

    配列内のn個の合計はx個であり、結果のサブセットを作成します

  11. 11

    削減のためのOpenMP並列は間違った結果をもたらします

  12. 12

    このコードが大きな配列に対して正しい結果をもたらさないのはなぜですか?

  13. 13

    MySQLは、StudentNumberでグループ化された日付合計を使用して結合します。行結合結果が0の場合でも値を返したい

  14. 14

    GROUP BYMONTHは間違った結果をもたらします

  15. 15

    Timedelta操作は間違った結果をもたらします

  16. 16

    JqueryDatatableの列の合計が無効な結果を示しています

  17. 17

    C ++ openmp並列計算は間違った結果を計算します

  18. 18

    MySQLの二重左結合が結果を2倍にし、列の合計結果を変更します

  19. 19

    Javaの:組み合わせソート関数は、間違った結果を計算します

  20. 20

    単純な計算の値がJavaで間違った結果をもたらすのはなぜですか?オーバーフローしますか?

  21. 21

    LINQは、合計された列がゼロでない場合にのみ行を合計します

  22. 22

    OpenMPの崩壊は間違った結果をもたらします

  23. 23

    Timedeltaとの時差は間違った結果をもたらします

  24. 24

    Pythonのreplace関数は間違った結果をもたらします

  25. 25

    間違った最大合計サブ配列(kadaneのアルゴリズム)を返しますが、最大合計は正しい

  26. 26

    合計時間の計算式で間違った結果が生成されるのはなぜですか?

  27. 27

    MDX結果の合計が間違っています

  28. 28

    Apache Commons Math:三重対角行列の固有分解は間違った結果をもたらします

  29. 29

    マルチスレッドの合計は誤った結果をもたらします

ホットタグ

アーカイブ