Лучшие помощники
- Megamozg 2200 б
- Matalya1 1800 б
- DevAdmin 1700 б
- arkasha_bortnikov 890 б
- Dwayne_Johnson 860 б
14 декабря 2022 18:59
791
Задача С «Симметричная матрица»Дана квадратная матрица. Проверить, является ли она симметричной относительно главной диагонали.
Входные данные.
Записано число 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
Остались вопросы?
Еще вопросы по категории Информатика
Как перевести байты в биты?...
В каком режиме работает с базой данных пользователь?...
Resource-image resource-image Директор IT-школы Борис Иванович повесил на двери VR-лаборатории кодовый замок. Замок — это пустые квадраты, в которые н...
Даны две точки в плоской прямоугольной системе координат. Напишите программу,определяющую, которая из точек находится ближе к началу координат....
Доступ к файлу book.txt осуществляется по протоколу ftp. Файл находится в папке science на сервере rebook.ru. Запиши адрес этого файла в сети...
Все предметы