М
Молодежь
К
Компьютеры-и-электроника
Д
Дом-и-сад
С
Стиль-и-уход-за-собой
П
Праздники-и-традиции
Т
Транспорт
П
Путешествия
С
Семейная-жизнь
Ф
Философия-и-религия
Б
Без категории
М
Мир-работы
Х
Хобби-и-рукоделие
И
Искусство-и-развлечения
В
Взаимоотношения
З
Здоровье
К
Кулинария-и-гостеприимство
Ф
Финансы-и-бизнес
П
Питомцы-и-животные
О
Образование
О
Образование-и-коммуникации
nsmotrova
nsmotrova
09.04.2021 17:48 •  Информатика

Задача С «Симметричная матрица»

Дана квадратная матрица. Проверить, является ли она симметричной относительно главной диагонали.
Входные данные.

Записано число n (0 < n ≤ 100).
В следующих n строках записано по n целых чисел от -32768 до 32767.
Выходные данные.

Вывести YES, если матрица симметрична относительно главной диагонали, иначе вывести NO.

Пример входных данных
3
1 2 3
2 4 5
3 5 6

Пример выходных данных
YES
почему у меня выводит "да" 3 раза??

👇
Ответ:
belevich031197
belevich031197
09.04.2021
Почему?

Потому что Вы каждый раз, когда матрица симметрична (но не до конца, а на данной итерации), выводите "YES", хотя не знаете, будет ли она симметрична далее.

Как решить?

1. Заведите переменную типа bool:

bool isSymmetrically = true;

2. В теле условия if (a[i][j] != a[j][i]) замените вывод на следующее:

isSymmetrically = false; // матрица не симметрична, можно заканчивать цикл (с

В блоке 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;}
4,5(65 оценок)
Открыть все ответы
Ответ:
kuanich
kuanich
09.04.2021

Первая задача:


var

i:integer;

a: array [1..7] of String;

begin

a[1]:='мама';

a[2]:='ель';

a[3]:='парта';

a[4]:='каникулы';

a[5]:='прыжок';

a[6]:='ура';

a[7]:='прикол';

for i:=1 to 7 do

writeln(a[i],' ', Length(a[i]));

end.


Вторая задача:


var

i, j, c:integer;

a:array [1..8] of integer;

begin

for i:=1 to 8 do

begin

writeln('Введите эл. массива A[', i, ']');

readln(a[i]);

end;

writeln();

for i:=1 to 8 do

write(a[i], ' ');

for i:=1 to 7 do

for j:=i+1 to 8 do

if a[i]>a[j] then

begin

c:=a[i];

a[i]:=a[j];

a[j]:=c;

end;

writeln();

for i:=1 to 8 do

write(a[i], ' ');

end.

4,4(96 оценок)
Ответ:
Tima764
Tima764
09.04.2021

1.

const n=5;

var a:array [1..n] of integer;

i:integer;

begin

write('       Исходный массив: ');

for i:=1 to n do

begin

a[i]:=random(21)-10;

write(a[i]:3,' ');

if a[i] mod 2 = 0 then a[i]:=a[i]-3

end;

writeln;

write('Преобразованный массив: ');

for i:=1 to n do write(a[i]:3,' ')

end.

2.

const n=8;

var a:array [1..n] of integer;

i,s:integer;

begin

write('Массив: ');

for i:=1 to n do

begin

a[i]:=random(21)-10;

write(a[i]:3,' ');

s:=s + a[i]

end;

writeln;

write('Сумма всех элементов массива: ',s)

end.

3.

const n=7;

var a:array [1..n] of integer;

i,p:integer;

begin

p:=1;

write('Массив: ');

for i:=1 to n do

begin

a[i]:=random(21)-10;

write(a[i]:3,' ');

if a[i] > 0 then p:=p * a[i]

end;

writeln;

write('Произведение положительных элементов массива: ',p)

end.

4,6(57 оценок)
Это интересно:
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ