J'ai donc une affectation pour ma classe C++. Fondamentalement, nous devons créer un tableau multidimensionnel 3x3, calculer la somme des rangées, la somme des colonnes, la somme des valeurs diagonales et la somme des valeurs anti-diagonales, je viens d'entrer 1 2 3 4 5 6 7 8 9 comme valeurs de départ point.C++ For loops and multidimensional arrays
Maintenant, je n'essaie pas d'être impoli mais mon professeur n'est pas très bon, nous passons essentiellement 2 heures sur un seul problème sans qu'elle explique beaucoup. Autre que cela, j'ai commencé avec C++ Primer et Programming: Principes et Pratique en C++, donc je crois que je serai capable d'apprendre beaucoup par moi-même.
Quoiqu'il en soit mes questions sont probablement tout à fait stupide, mais si quelqu'un se sent comme aider, ils sont là:
- Mon/**/commenté pour la boucle pour la valeur anti-diagonale me donne une somme mauvaise. Je suppose que cela a quelque chose à voir avec la nature des boucles for-loops ou je tape juste mal, mais je ne l'ai pas encore compris.
2. La solution de l'enseignant pour le calcul des valeurs anti-diagonale est la suivante:
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];
Comment est-il différent de mon approche? Je crois que le mien est plus simple et fonctionne mieux.
3.In ligne:
int sumRows[row_num] = { 0 };
Pourquoi {} doivent être utilisées? Notre professeur n'a pas pris la peine d'expliquer cela. J'ai essayé sans {} mais j'ai eu une erreur.
Voici le code complet pour ma version:
#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;
}
Les virgules ne fonctionnent pas comme vous le pensez – dwcanillas
Il est plus facile de remplir le tableau avec une valeur particulière. int sumRows [row_num] = {0}; –
votre boucle d'enseignants est plus facile à lire et à corriger, la vôtre n'est pas (même si l'erreur ne s'affiche pas, mais votre condition de rupture est erronée) – user463035818