1

問題は…だと思いますが、すべての合計が等しいとは言えません。そして、私は知っています、これはいくつかのくだらないプログラミングです。xD問題の横にいくつかの星を付けます。

ご協力ありがとうございました。

#include <iostream>

using namespace std;


//function that passes a variable through and checks and sees if that variable has been used before.
    bool checkArray(int pass[5][5], int toCheck)
    {
        bool check = false;
        for(int i = 0; i < 5; i++)
        {
            for(int j = 0; j < 5; j++)
            {
                if(pass[i][j] == toCheck)
                {
                    check = true;
                }
            }
        }
    return check;
    }



int main(){
bool allTrue;
int array[5][5] = {0};
int num;
int count=0;
int arraySums[12];

    for(int i = 0; i < 5; i++)
        {
        for(int j = 0; j < 5; j++)
            {
            do //    do while executes when number is 1-25, and a number has not been found when run through the function to check if it is found in the array.
                {
                cout << "Please enter a number that will go in slot (" << i + 1 << ")(" << j + 1 << "): ";
                cin >> num;
                }
            while(((num < 1) || (num > 25)) || (checkArray(array, num) ==  true));

            array[i][j] = num;
        }
    }

//populate the arraySums Array.
//for(int i=0; i<2)




    for(int i = 0; i < 5; i++) // prints out array
    {
        for(int j = 0; j < 5; j++)
        {
            cout << " | " << array[i][j] << "  ";
        }
    cout << endl;
    count++;
    }

//for horizontal sums
arraySums[0]=array[0][0] + array[0][1] + array[0][2] + array[0][3] + array[0][4];
arraySums[1]=array[1][0] + array[1][1] + array[1][2] + array[1][3] + array[1][4];
arraySums[2]=array[2][0] + array[2][1] + array[2][2] + array[2][3] + array[2][4];
arraySums[3]=array[3][0] + array[3][1] + array[3][2] + array[3][3] + array[3][4];
arraySums[4]=array[4][0] + array[4][1] + array[4][2] + array[4][3] + array[4][4];

//for vertical sums
arraySums[5]=array[0][0] + array[1][0] + array[2][0] + array[3][0] + array[4][0];
arraySums[6]=array[0][1] + array[1][1] + array[2][1] + array[3][1] + array[4][1];
arraySums[7]=array[0][2] + array[1][2] + array[2][2] + array[3][2] + array[4][2];
arraySums[8]=array[0][3] + array[1][3] + array[2][3] + array[3][3] + array[4][3];
arraySums[9]=array[0][4] + array[1][4] + array[2][4] + array[3][4] + array[4][4];

//for diagonal sums
arraySums[10]=array[0][0] + array[1][1] + array[2][2] + array[3][3] + array[4][4];
arraySums[11]=array[0][4] + array[1][3] + array[2][2] + array[3][1] + array[4][0];

//to display horizontal sums
int count2=0;
for(int i = 0; i<5; i++)
{
    cout << "Horizontal sum for row: " << count2+1 << " is " << arraySums[i] << endl;
    count2++;
}

//to display the vertical sums.
count2=0;
for(int i = 5; i<10; i++)
{
    cout << "Vertical sum for row: " << count2+1 << " is " << arraySums[i] << endl;
    count2++;
}


//to display both diagonal sums
cout << "The diagonal sum from left to right is: " << arraySums[10] << endl;
cout << "The diagonal sum from right to left is: " << arraySums[11] << endl;

   //************************************************************************************************************* 
for(int i=0; i<13; i++)
{
    if(!(arraySums[i]==arraySums[i+1]))
    {
        allTrue=false;
        break;
    }

}


if(allTrue==true)
{
    cout<< "All the values are equal to each other." << endl;
}

}
4

2 に答える 2

0

ループの最後の反復では、比較していますarraySums[12]==arraySums[13]。この配列には、0から11までの番号が付けられた12個の値しかありません。

forループは次のようになります

for(int i=0; i<11; i++)

はい、それは11です。12個のデータセット間で11個の比較しかできません。それ以外の場合、最後のデータセットを何と比較しますか?

編集:初期化されていないという答えallTrueがなくなったので、ここで言います。初期化する必要がありますallTrue

bool allTrue = true;
于 2012-05-02T03:20:04.320 に答える
0

標準アルゴリズムは大丈夫ですか?

もしそうなら、あなたはカウント、またはsearch_nを試すことができます。

カウントバージョン:bool bAllTrue =(count(array [0] [0]、array [5] [0]、array [0] [0])、25);

search_nバージョン:bAllTrue = search_n(&array [0] [0]、&array [5] [0]、array [0] [0]、25);

于 2012-05-02T05:01:19.320 に答える