Para aquellos que no están familiarizados con el clásico algoritmo cuadrado mágico: Un cuadrado mágico es un conjunto bidimensional (n x n) que contiene un valor numérico entre los valores 1 y n^2 en cada ubicación. Cada valor puede aparecer solo una vez. Además, la suma de cada fila, columna y diagonal debe ser la misma. La entrada debe ser impar ya que estoy escribiendo una solución cuadrada mágica impar.Magic Square Program (C++)
He completado el problema, pero a partir de ahora tiene un error desconocido (lógica? Salida?) Que me ha estado irritante durante la última hora. Los valores que salen son muy fuera de marca. Cualquier ayuda sería muy apreciada:
#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;
}
}
Y el error es _what_, exactamente? ¿Qué está haciendo y cuál es la diferencia entre eso y lo que ** debería ** estar haciendo? ¿Has probado usar un depurador? –
¿Ha intentado depurarlo en un depurador? GDB y VS C++ Express son gratuitos. No hay muchas excusas para no hacerlo. – linuxuser27
inicializa la matriz con el valor inicial, es decir, 0. o utiliza un idioma que inicializa la matriz al valor predeterminado. Al igual que java initialize int to 0, flotar a 0.0 y object array a null. – Trying