Лучшие помощники
- Megamozg 2200 б
- Matalya1 1800 б
- DevAdmin 1710 б
- arkasha_bortnikov 895 б
- Dwayne_Johnson 860 б
14 декабря 2022 18:59
803
Задача С «Симметричная матрица»Дана квадратная матрица. Проверить, является ли она симметричной относительно главной диагонали.
Входные данные.
Записано число n (0 < n ≤ 100).
В следующих n строках записано по n целых чисел от -32768 до 32767.
Выходные данные.
Вывести YES, если матрица симметрична относительно главной диагонали, иначе вывести NO.
Пример входных данных
3
1 2 3
2 4 5
3 5 6
Пример выходных данных
YES
почему у меня выводит "да" 3 раза??
1
ответ
Почему?
Потому что Вы каждый раз, когда матрица симметрична (но не до конца, а на данной итерации), выводите "YES", хотя не знаете, будет ли она симметрична далее.Как решить?
1. Заведите переменную типа bool:bool isSymmetrically = true;
2. В теле условия if (a[i][j] != a[j][i]) замените вывод на следующее:
isSymmetrically = false; // матрица не симметрична, можно заканчивать цикл (с помощью break)
В блоке else:
isSymmetrically = true; // на данном этапе симметрия присутствует
2.1. После вложенного цикла произведите проверку на то, симметрична ли матрица, чтобы в случае несимметричности не продолжать проверку, а сразу сделать вывод:
if (isSymmetrically == false)
{ break; }
3. После всех циклов вы произвдите следующую проверку:
if (isSymmetrically = true) // если матрица симметрична
{ // вывод YES }
else
{ // вывод NO }
Исправленный код
- #include <iostream>
- using namespace std;
- int main()
- {
- int n = 0;
- int a[100][100];
- bool isSymmetrically = true;
- cin >> n;
- for (int i = 0; i < n; i++)
- {
- for (int j = 0; j < n; j++)
- {
- cin >> a[i][j];
- }
- cout << endl;
- }
- for(int i = 0; i < n - 1; i++)
- {
- for(int j = i + 1; j < n; j++)
- {
- if(a[i][j] != a[j][i])
- {
- isSymmetrically = false;
- break;
- }
- else
- {
- isSymmetrically = true;
- }
- }
- if (isSymmetrically == false)
- {
- break;
- }
- }
- if (isSymmetrically == true)
- {
- cout << "YES" << endl;
- }
- else
- {
- cout << "NO" << endl;
- }
- return 0;
- }
0
·
Хороший ответ
16 декабря 2022 18:59
Остались вопросы?
Еще вопросы по категории Информатика
Злая мачеха отправила падчерицу к роднику за водой."Вот тебе 2 ведра,в одно из них входит 9 литров воды,а в другое 5 литров.Но ты должна принести 3 ли...
Доступ к файлу hello.jpg, находящемуся на сервере home.info, осуществляется по протоколу ftp. Фрагменты адреса файла закодирова...
Напишите программу,в которой осуществляется ввод целых чисел (ввод осуществляется до тех пор,пока не будет введён ноль) и подсчет суммы и среднего ари...
какое высказывание является ложным? 1) Знаком V обозначается логическая операция ИЛИ ; 2) Логическую операцию ИЛИ иначе называют логическим сложением;...
Алёша, Боря и Гриша нашли в земле старинный сосуд. рассматривая удивительную находку, каждый высказал по два предположения: 1)алёша: это сосуд греческ...
Все предметы