Pour ceux qui ne connaissent pas l'algorithme du carré magique classique: Un carré magique est un tableau bidimensionnel (n x n) qui contient une valeur numérique entre les valeurs 1 et n^2 à chaque emplacement. Chaque valeur peut apparaître qu'une seule fois. De plus, la somme de chaque ligne, colonne et diagonale doit être la même. L'entrée devrait être étrange car j'écris une solution de carré magique impair.Programme Magic Square (C++)
J'ai terminé le problème mais maintenant il a un bug inconnu (logique? Sortie?) Qui a été me fâcher pour la dernière heure. Les valeurs qui sont sorties sont très hors marque. Toute aide serait très apprécié:
#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
int n;
cout<< "Please enter an odd integer: ";
cin>>n;
int MagicSquare[n][n];
int newRow,
newCol;
// Set the indices for the middle of the bottom i
int i =0 ;
int j= n/2;
// Fill each element of the array using the magic array
for (int value = 1; value <= n*n; value++)
{
MagicSquare[i][j] = value;
// Find the next cell, wrapping around if necessary.
newRow = (i + 1) % n;
newCol = (j + 1) % n;
// If the cell is empty, remember those indices for the
// next assignment.
if (MagicSquare[newRow][newCol] == 0)
{
i = newRow;
j = newCol;
}
else
{
// The cell was full. Use the cell above the previous one.
i = (i - 1 + n) % n;
}
}
for(int x=0; x<n; x++)
{
for(int y=0; y<n; y++)
cout << MagicSquare[x][y]<<" ";
cout << endl;
}
}
Et le bug est _what_, exactement? Qu'est-ce que ça fait, et quelle est la différence entre ça et ce que ** ça devrait faire? Avez-vous essayé d'utiliser un débogueur? –
Avez-vous essayé de le déboguer dans un débogueur. GDB et VS C++ Express sont gratuits. Pas beaucoup d'excuses pour ne pas. – linuxuser27
initialise le tableau avec la valeur initiale, c'est-à-dire 0. ou utilise un langage qui initialise le tableau à la valeur par défaut. Comme java initialize int à 0, float à 0.0 et object array à null. – Trying