Итак, у меня есть назначение для моего класса C++. В основном нам нужно создать многомерный массив 3x3, вычислить сумму строк, сумму столбцов, сумму диагональных значений и сумму антидиагональных значений, я обычно просто вводю 1 2 3 4 5 6 7 8 9 в качестве значений в качестве стартового точка.C++ Для циклов и многомерных массивов
Теперь я не пытаюсь быть грубым, но мой учитель не очень хорош, мы в основном тратим 2 часа на одну проблему, не делая много объяснений. Кроме этого, я начал с C++ Primer and Programming: Principles and Practice Using C++, поэтому я считаю, что смогу самостоятельно научиться самостоятельно.
Во всяком случае мои вопросы, наверное, довольно глупо, но если кто-то чувствует, как помочь, вот они:
- Моей/**/комментировал цикл для анти-диагонального значения дает мне неправильно сумма. Я предполагаю, что это имеет какое-то отношение к характеру for-loops, или я просто печатаю его неправильно, но пока не понял. Решение
2.The учителя для расчета анти-диагональные значения заключается в следующем:
for (i = 0; i < row_num; ++i)
for (j = 0; j < col_num; ++j)
if (i + j == row_num - 1)
anti-diagonal += A[i][j];
Как это отличается от моего подхода? Я считаю, что моя проще и работает лучше.
3.In линия:
int sumRows[row_num] = { 0 };
Почему {} должны быть использованы? Наш учитель не стал объяснять это. Я пробовал без {}, но у меня ошибка.
Вот полный код для моей версии:
#include "../../std_lib_facilities.h"
#include <iostream>
using namespace std;
#define row_num 3 //no. of rows
#define col_num 3 //no. of columns
int main()
{
int i = 0;
int j = 0;
int diagonal = 0;
int antidiagonal = 0;
int sumRows[row_num] = { 0 };
int sumCol[col_num] = { 0 };
int A[row_num][col_num];
//Input to matrix
for(i=0; i<row_num; i++)
for (j = 0; j < col_num; j++)
{
cout << "A[" << i << "]" << "[" << j << "]: ";
cin >> A[i][j];
sumRows[i] += A[i][j];
sumCol[j] += A[i][j];
}
cout << endl;
//Print out the matrix
for (i = 0; i < row_num; i++)
{
for (j = 0; j < col_num; j++)
cout << A[i][j] << '\t';
cout << endl;
}
//prints sum of rows
for (i = 0; i < row_num; i++)
cout << "Sum of row " << i + 1 << " "<< sumRows[i] << endl;
//prints sum of columns
for (j = 0; j < row_num; j++)
cout << "Sum of column " << j + 1 << " " << sumCol[j] << endl;
//Sum of diagonal values
for (i = 0; i < row_num; i++)
diagonal += A[i][i];
//Sum of antidiagonal values
for (i = 0, j = 2; i < row_num, j >= 0; i++, j--)
antidiagonal += A[i][j];
/*for(i=0; i<row_num; i++)
for (j = 2; j >= 0; j--)
{
antidiagonal += A[i][j];
}
*/
cout << "\nSum of diagonal values: " << diagonal << endl;
cout << "Sum of antdiagonal values: " << antidiagonal << endl;
return 0;
}
Запятые не работают так, как вы думаете, они делают – dwcanillas
Это простой способ заполнить массив конкретным значением. int sumRows [row_num] = {0}; –
Ваша петля учителей легче читать и исправлять, а ваша нет (даже если ошибка не появляется, но ваше состояние прерывания неверно) – user463035818