-3

16 個の数字のセットを取り込んで 4x4 のグリッドに出力するプログラムがあります。次に、各行、列、および対角線の合計が同じ数になることを確認する必要がありますが、それがどのように機能するかがわからないため、この部分を実行できません。誰でも助けることができますか?

現在のコード:

void getNumbers(int numbers[]){
int idx;
for(int x = 0; x < 17; x++){
    cout << "Please enter a number: " << endl;
    cin >> idx;
    numbers[x] = idx;
}
cout << " " << numbers[0] << " " << numbers[1] << " " << numbers[2] << " " << numbers[3] << endl;
cout << " " << numbers[4] << " " << numbers[5] << " " << numbers[6] << " " << numbers[7] << endl;
cout << " " << numbers[8] << " " << numbers[9] << " " << numbers[10] << " " << numbers[11] << endl;
cout << " " << numbers[12] << " " << numbers[13] << " " << numbers[14] << " " <<  numbers[15] << endl;
}
4

3 に答える 3

1

構文エラーが表示された場合は削除してください。コード全体が機能するはずです。楽しみ ;-)

bool magicSquare(){
    int idx;
    int numbers[4][4];
    cout << "Please enter your numbers: " << endl;
    for(unsigned int i=0; i<4; i++) {
        for(unsigned int j=0; j<4; j++) {
            cin >> idx;
            numbers[i][j] = idx;
        }
    }
    // Checking 
    for(unsigned int i=0; i<4; i++) {
        int row_sum = 0;
        for(unsigned int j=0; j<4; j++) {
            row_sum+= numbers[i][j];
        }
        int col_sum = 0;
        for(unsigned int j=0; j<4; j++) {
            col_sum+= numbers[j][i];
        }
        int diag_sum_left = numbers[0][0] +  numbers[1][1] +  numbers[2][2];
        int diag_sum_right = numbers[0][2] +  numbers[1][1] +  numbers[2][0];
        if ((col_sum != 15) || 
            (row_sum !=15) ||
            (diag_sum_left != 15) ||
            (diag_sum_right != 15) )
            return false;
    }       
    cout << "Your answer is correct:" << endl;
    for(unsigned int i=0; i<4; i++) {
        for(unsigned int j=0; j<4; j++) 
            cout << numbers[i][j] << "\t";
        cout << endl;
    }       
    return true;
}
于 2013-04-22T20:41:15.520 に答える