如何解决C ++多维数组,每一行和每一列的总和
几天前,我重新开始编码。这次使用C ++,而不是Java。我有一本书,充满了教训。从现在开始,我被困了两天。也许有人可以给我一些建议。
课程从以下代码开始:
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
// ein 2-dim. Array erstellen
int Zeile,Spalte;
int Tab[5][4];
for (Zeile = 0; Zeile <= 4; Zeile++)
{
for (Spalte = 0; Spalte <= 3; Spalte++)
{
Tab[Zeile][Spalte] = 0;
}
}
// 2-dim. Array mit Zufallszahlen füllen
for (Zeile = 0; Zeile <= 4; Zeile++)
{
for (Spalte = 0; Spalte <= 3; Spalte++)
{
Tab[Zeile][Spalte] = rand() % 10 + 1;
}
}
// Ausgabe des 2-dim. Arrays
for (Zeile = 0; Zeile <= 4; Zeile++)
{
for (Spalte = 0; Spalte <= 3; Spalte++)
{
cout << setw(8) << Tab[Zeile][Spalte];
}
cout << endl;
}
return 0;
}
当我运行这段代码时,我得到的是这样的:
6 3 5 1
7 4 4 2
3 3 3 3
1 2 3 4
6 7 7 7
现在,我应该创建一个新行和一个新列,并填充每一行和每一列的总和。所以它应该像这样:
6 3 5 1 15
7 4 4 2 17
3 3 3 3 12
1 2 3 4 10
6 7 7 7 27
23 19 22 17 81
我唯一得到的东西是这样的:
int main()
{
// ein 2-dim. Array erstellen
int Zeile,Spalte,Spaltensumme,Zeilesumme;
int Tab[5][4];
for (Zeile = 0; Zeile <= 4; Zeile++)
{
for (Spalte = 0; Spalte <= 3; Spalte++)
{
Tab[Zeile][Spalte] = 0;
}
}
// 2-dim. Array mit Zufallszahlen füllen
for (Zeile = 0; Zeile <= 4; Zeile++)
{
for (Spalte = 0; Spalte <= 3; Spalte++)
{
Tab[Zeile][Spalte] = rand() % 10 + 1;
// Finden der Spaltensumme
for (Zeile = 0; Zeile < 4; ++Zeile)
{
for (Spalte = 0; Spalte <= 3; ++Spalte)
{
Spaltensumme = Spaltensumme + Tab[Zeile][Spalte];
}
}
// Finden der Zeilensumme
for (Zeile = 0; Zeile < 4; ++Zeile)
{
for (Spalte = 0; Spalte <= 3; ++Spalte)
{
Zeilesumme = Zeilesumme + Tab[Spalte][Zeile];
}
}
}
}
// Ausgabe des 2-dim. Arrays
for (Zeile = 0; Zeile <= 4; Zeile++)
{
for (Spalte = 0; Spalte <= 3; Spalte++)
{
cout << setw(8) << Tab[Zeile][Spalte];
}
cout << endl;
}
return 0;
}
很抱歉,这些评论是德语的。我以与本书相同的风格进行编码。 我知道我的代码无法正常工作,而且每小时都在恶化。也许有人可以在我变得疯狂之前帮助我。谢谢!
解决方法
主要思想是添加额外的行和列,以便在用随机数填充矩阵时可以存储总和。我已尽力使您的代码保持完整。我在需要更改代码的地方添加了注释。
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
// ein 2-dim. Array erstellen
int Zeile,Spalte;
int Tab[6][5]; //increase number of columns and rows by 1 here to store the sum
for (Zeile = 0; Zeile <= 5; Zeile++)//updated the bound of Zeile
{
for (Spalte = 0; Spalte <= 4; Spalte++)//updated the bound of Spalte
{
Tab[Zeile][Spalte] = 0;
}
}
// 2-dim. Array mit Zufallszahlen füllen
for (Zeile = 0; Zeile <= 4; Zeile++)
{
for (Spalte = 0; Spalte <= 3; Spalte++)
{
Tab[Zeile][Spalte] = rand() % 10 + 1;
Tab[Zeile][4] += Tab[Zeile][Spalte]; // add to row sum
Tab[5][Spalte] += Tab[Zeile][Spalte]; // add to column sum
Tab[5][4] += Tab[Zeile][Spalte]; //lowest-rightmost sum element
}
}
// Ausgabe des 2-dim. Arrays
for (Zeile = 0; Zeile <= 5; Zeile++) //updated the bound of Zeile
{
for (Spalte = 0; Spalte <= 4; Spalte++) //updated the bound of Spalte
{
cout << setw(8) << Tab[Zeile][Spalte];
}
cout << endl;
}
return 0;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。