我需要總結和輸出行,列和主對角線。有人可以告訴我我做錯了什麼嗎?這是我得到使用的代碼,但我似乎無法得到它輸出我的總和。我在下面的代碼中提出了一個評論,我相信我的問題存在,它開始總結和停止。我很感激任何幫助,因爲我無法自行解決這個問題。輸出應該是一個3 x 3的矩陣,第四行和第四列中的行,列和對角線的總和等於15.我的輸出不是將行,列和diagonls相加。幻方,我無法得到這個總和的行,列和對角線
#include <iostream>
#include <fstream>
#include <iomanip>
using namespace std;
int main()
{
int n = 3;
int row, col, r, c, i, j, k, diag=0;
int magic[19][19];
ofstream fout;
fout.open("p4-out.txt");
for(j=0 ; j<n+1 ; j++){
for(k=0 ; k<n+1 ; k++)
magic[j][k] = 0;}
row=1; col=(n+1)/2;
magic[row-1][col-1]=1;
for(i=2 ; i<=(n*n) ; i++){
row-=1; col-=1;
if(row==0 && col==0){col++; row+=2;}
else if(row==0) row=n;
else if(col==0) col=n;
else if(magic[row-1][col-1]!=0)
{col++; row+=2;}
magic[row-1][col-1]=i;}
for(r=0; r<n; r++){
for(c=0; c<n; c++)
magic[r][n]+=magic[r][c];}
for(c=0; c<n; c++){
for(r=0; r<n; r++)
magic[n][c]+=magic[r][c];}
for(r=0; r<n; r++){
magic[n][n]+=magic[r][r];}
for(r=1; r<(n-1); r++){
c = n - r + 1;
diag+=magic[r][c];}
for(r=0; r<(n+1) ; r++){
fout << endl;
for(c=0; c<(n+1) ; c++)
{fout << setw (5) << magic[r][c];}
fout << endl;}
return 0;
}
// This my output.
15 <---// I need this 15 to go
6 1 8 15 |
|
7 5 3 15 |
|
2 9 4 15 |
|
[15] 15 15 15 15 |
^-------------<------------<----------<-------|
here
什麼是預期的輸出,這有什麼實際的輸出?你是否嘗試過在調試器中運行它,逐行執行,同時檢查變量和邏輯?另外,請嘗試在http://codereview.stackexchange.com/上提問。 –