Проблема с кодом в c++

147
09 июня 2019, 08:30

Не могу понять почему слово симметрична выводится 16 раз, n и m равны 4, и такое ощущение что код как то эти значения умножает. В чем ошибка ? вот код:

#include "stdafx.h"
#include <iostream>
#include <iomanip>
using namespace std;
int main(int argc, const char * argv[])
{
    setlocale(LC_CTYPE, "rus");
    const unsigned int n = 4;
    const unsigned int m = 4;
    int arr[n][m] = {
        { 1, 2, 3, 4 },
        { 2, 1, 7, 6 },
        { 3, 7, 1, 0 },
        { 4, 6, 0, 1 }
    };
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < m; j++) {
            cout << setw(2) << arr[i][j];
        }
        cout << endl;
    }
    bool flag = true;
    for (int i = 0; i < n; ++i)
        for (int j = 0; j < n; ++j)
            if (arr[i][j] != arr[j][i])
            {
                flag = false;
                cout << "Не симметрична" << endl;
                break;
            }
            else if
            (flag == true)
                cout << "Симметрична" << endl;
    system("pause");
    return 0;
}
Answer 1

Вы 16 раз сравниваете два числа, и для каждого сравнения (а они все у вас успешно равны) просите вывести "Симметрична". Все, как попросили...

bool flag = true;
for (int i = 0; i < n; ++i)
    for (int j = i+1; j < n; ++j)
        if (arr[i][j] != arr[j][i])
        {
            flag = false;
            break;
        }
cout << (flag ? "Симметрична" : "Несимметрична") << endl;

Вот так несколько получше... Кстати, обратите внимание на

for( int j = i+1;

Там проверка с 0 не нужна.

Answer 2
for (int i = 0; i < n && flag; ++i)
    for (int j = 0; j < n && flag; ++j) 
        if (arr[i][j] != arr[j][i])
            flag = false;
if (flag)
    cout << "Симметрична" << endl;
else
    cout << "Не симметрична" << endl;
READ ALSO
Qt5, Code::Blocks, undefined reference

Qt5, Code::Blocks, undefined reference

Пытаюсь добавить Qt5 в готовый проектВозникли две ошибки: undefined reference to "_imp___ZN12QApplicationC1ERiPPci' и undefined reference to "_imp___ZN12QApplicationD1Ev'

145
Наследование и перегрузка

Наследование и перегрузка

Есть базовый класс

129
задача с NULL в C++

задача с NULL в C++

помогите разобраться , нужно написать программу решающее уравнение (a+b-c), но нужно сделать так чтобы если какое либо поле было не заполнено...

136
Реализация массива в обратном порядке. (JAVA)

Реализация массива в обратном порядке. (JAVA)

Вчера в задание надо было создать массив который выводил бы данные в обратном порядкеСделал не массив а String str1 = " Football "; // Обьявляем строку...

126