#c #arrays #multidimensional-array #sum
#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;
}
Извините, что комментарии на немецком языке. Я пишу в том же стиле, что и книга.
Я знаю, что мой код не работает, и с каждым часом становится все хуже. Может быть, кто-нибудь сможет мне помочь, прежде чем я сойду с ума. Спасибо!
Ответ №1:
Основная идея состоит в том, чтобы добавить дополнительную строку и столбец, чтобы мы могли сохранять сумму по мере заполнения матрицы случайными числами. Я постарался сохранить как можно больше вашего кода нетронутым. Я добавил комментарии везде, где код нуждается в изменении.
#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;
}