Лучшие помощники
- Megamozg 2205 б
- Matalya1 1800 б
- DevAdmin 1720 б
- arkasha_bortnikov 900 б
- Dwayne_Johnson 870 б
14 декабря 2022 18:59
928
Задача С «Симметричная матрица»Дана квадратная матрица. Проверить, является ли она симметричной относительно главной диагонали.
Входные данные.
Записано число 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
Остались вопросы?
Еще вопросы по категории Информатика
Сообщение, записанное буквами из 16- символьного алфавита, содержит 60 символов.Какой объем информации оно несёт? СРОЧНО!!!! ДАМ + 20БАЛЛОВ!!!!...
На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом: 1) Строится двоичная запись числа N. 2) К эт...
Напишите программу, которая позволит проверять пароль на сложность. Проверку пароля следует проводить по таким критериям: 1. Длина: от 5 символов....
Согласны ли вы что понятие информации имеет контекстный смысл? Если да ,то покажите это в премерах...
1. Для какого из приведённых чисел истинно высказывание: (число <75) И НЕ (число чётное)? 1) 46 2) 53 3) 80 4) 99 2. Для какого из приведённых чисе...