Für diejenigen, die nicht mit dem klassischen magischen Quadrat-Algorithmus vertraut sind: Ein magisches Quadrat ist ein zweidimensionales Array (n x n), das an jeder Stelle einen numerischen Wert zwischen den Werten 1 und n^2 enthält. Jeder Wert darf nur einmal vorkommen. Außerdem muss die Summe jeder Zeile, Spalte und Diagonale gleich sein. Die Eingabe sollte ungerade sein, da ich eine ungerade magische Quadrat-Lösung schreibe.Magic Square Programm (C++)
Ich habe das Problem erfolgreich abgeschlossen, aber ab jetzt ist es ein unbekannter Fehler hat (Logik? Ausgang?), Die für die letzte Stunde ärgerliche mich ist. Die ausgegebenen Werte sind sehr schlecht. Jede Hilfe wäre sehr geschätzt:
#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;
}
}
Und der Fehler ist _what_ genau? Was macht es, und was ist der Unterschied zwischen dem und was es tun sollte? Haben Sie versucht, einen Debugger zu verwenden? –
Haben Sie versucht, es in einem Debugger zu debuggen. GDB und VS C++ Express sind kostenlos. Nicht viele Ausreden, nicht zu. – linuxuser27
initialisieren Sie das Array mit dem Initialwert, d. H. 0. oder verwenden Sie eine Sprache, die das Array auf den Standardwert initialisiert. Wie Java initialisiert int auf 0, float auf 0.0 und Objekt-Array auf null. – Trying