私の出力はかなりです。ファイルから配列を読み込み、行、列、および対角線の合計を集計しています。 isMagic()のブール値を除いてすべて正常に動作します。すべての合計が等しい場合はtrueを返し、そうでない場合はfalseを返します。私のブール値は毎回falseを返しています。C++、配列、Magic Box
右と左の対角の和のためのメソッドをコーディングするとき、私はこれらのintをrowTotal(row)とcolTotal(col)と比較することができないので、私は(int size)を入力しました。私の全体的なコードには影響しません。私は正しく返すためにブール値が必要です。何か案は?
// Purpose: Magic BOX...
#include <iostream>
#include <cstdlib>
#include <fstream>
using namespace std;
int size= 0;
int box [][10]= {};
void ReadIn(ifstream& fin)
{
box[size][size];
for(int i = 0; i<size;++i)
{
for(int j= 0; j<size;++j)
fin>> box[i][j];
}
cout<<"\n";
}
int rowTotal(int row)
{
int total = 0;
for(int i = 0; i<size; ++i)
total+= box[row][i];
return total;
}
int colTotal(int col)
{
int total = 0;
for(int i=0; i<size; ++i)
total += box[i][col];
return total;
}
int rightdiagonal(int size)
{
int total = 0;
for(int i=0; i<size; ++i)
total+= box[i][i];
return total;
}
int leftdiagonal(int size)
{
int total = 0;
int j=size-1;
for(int i=0; i<size; ++i)
{
total+= box[i][j];
j--;
}
return total;
}
bool isMagic()
{
if(rowTotal != rightdiagonal)
return false;
if(colTotal != rightdiagonal)
return false;
if(rightdiagonal != leftdiagonal)
return false;
else return true;
}
void print(int& count)
{
int row=0, col=0;
cout<< "==========="<<"\n"<< "===Box "<< count<<"==="<<"\n"<<"==========="<<endl;
for(int i = 0; i < size; ++i)
{
for(int j = 0; j<size; ++j)
{
cout<<box[i][j]<<" ";
}
cout<<"\n";
}
cout<<"\n";
}
int main()
{
int count = 1;
ifstream fin ("magicbox.txt");
fin>>size;
while(size != -1)
{
ReadIn(fin);
print(count);
for (int i=0; i<size; ++i)
{
int row=0;
rowTotal(row);
cout<<"The sum of row "<< row<< " is "<< rowTotal(row)<< endl;
row++;
}
cout<< "\n";
for(int i = 0; i < size; ++i)
{
int col=0;
colTotal(col);
cout<<"The sum of column "<< col<< " is "<< colTotal(col)<< endl;
col++;
}
cout<<"\n";
rightdiagonal(size);
cout<<"The sum of the right diagonal is " << rightdiagonal(size)<< endl;
leftdiagonal(size);
cout<<"The sum of the left diagonal is " << leftdiagonal(size)<< endl;
isMagic();
if(isMagic() == true)
cout<<"This matrix IS a magic box!"<<endl;
else
cout<<"This matrix is NOT a magic box."<< endl;
fin>>size;
count++;
}
}
「ボックス[サイズ] [サイズ]」とは何と思いますか?あなたの配列は、1行(またはゼロ行)と10列の静的変数です。 – gnasher729
場合によっては、問題を示す最小コードにコードを移動させることができます。非常に頻繁にこれは明快さを追加し、あなた自身を解決することができます。 –
はい、私はあなたが 'box [size] [size]'が何をしていると思いますかは分かりませんが、それは間違いありません。 _Please_は適切に字下げを開始します(これは物理的には読み込みに痛い)。 GCC 6は、あなたのインデントの誤解を招くことがあるため、このコードを使用して1日のフィールドを持つことになります。同じ理由から、条件ブロックの周りには、常にあなたが実際にどこにいらっしゃるのではないかという恐ろしいエラーを招く場所を省略して、常に括弧を使用してください。 –