С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 14.11.2021
Сообщений: 1

Где ошибка? Нужно, чтобы матрица выводилась и симметричной, и нет. Но генерируется только НЕ симметричная

14.11.2021, 07:29. Показов 429. Ответов 2

Студворк — интернет-сервис помощи студентам
Определить, является ли заданная целочисленная квадратная матрица порядка N симметричной относительно главной диагонали.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#include <iostream>
#include <cmath>
#include <windows.h>
 
 
using namespace std;
 
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
 
    const int N = 6;
    int arr[N][N], k;
    cout << "Введите матрицу:" << endl;
    for (int i = 0; i < N; i++) {
        for (int j = 0; j < N; j++) {
            arr[i][j] = rand() % 10;
            cout << arr[i][j] << " ";
        }
        cout << endl;
    }
    k = 0;
    for (int j = 0; j < N - 1; j++)
    {
        for (int i = j + 1; i < N; i++)
        {
            if (arr[i][j] == arr[j][i])
            {
                k++;
            }
        }
    }
    if (k == (pow(N, 2) - N) / 2)
    {
        cout << "Ответ:" << "симметрична" << endl;
        for (int i = 0; i < N; i++)
        {
            arr[i][i] = 0;
            for (int j = 0; j < N; j++)
            {
                cout << arr[i][j] << " ";
            }
            cout << endl;
        }
    }
    else
    {
        cout << "Ответ:" << "не симметрична" << endl;
    }
    cin.get();
    system("pause");
    return 0;
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
14.11.2021, 07:29
Ответы с готовыми решениями:

Написать, чтобы выводилась таблица с НомерГТД, где их нет
//{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА // Данный фрагмент построен конструктором. // При повторном использовании...

Изменить программу так, чтобы нужно было ввести размер n матрицы и матрица выводилась сама
Как изменить программу так, чтобы нужно было ввести размер n матрицы и матрица выводилась сама. program stroka; uses crt; var...

Дописать код, чтобы матрица выводилась в Exсel...
Можете дописать код, чтобы матрица выводилась в Exel uses crt; Const mn = 16; Var p: Boolean; Procedure Swap(Var...

2
 Аватар для агерон
447 / 300 / 65
Регистрация: 12.10.2009
Сообщений: 1,162
14.11.2021, 08:42
ГЛАЗА!!!! :-D
Мои бедные глаза :-D
Хоть так дам им отдых :-D

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#include <iostream>
#include <cmath>
#include <windows.h>
 
 
using namespace std;
 
int main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
 
const int N = 6;
int arr[N][N], k;
cout << "Введите матрицу:" << endl;
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) {
arr[i][j] = rand() % 10;
cout << arr[i][j] << " ";
}
cout << endl;
}
k = 0;
for (int j = 0; j < N - 1; j++)
{
for (int i = j + 1; i < N; i++)
{
if (arr[i][j] == arr[j][i])
{
k++;
}
}
}
if (k == (pow(N, 2) - N) / 2)
{
cout << "Ответ:" << "симметрична" << endl;
for (int i = 0; i < N; i++)
{
arr[i][i] = 0;
for (int j = 0; j < N; j++)
{
cout << arr[i][j] << " ";
}
cout << endl;
}
}
else
{
cout << "Ответ:" << "не симметрична" << endl;
}
cin.get();
system("pause");
return 0;
}
Ответ на твою проблему (почему генерируемая матрица ВСЕГДА НЕ симметричная) в 18 строке, рандом на то и рандом потому что он случайность :-D
Совет для решения твоей проблемы простой сгенерируй первую половину матрицы и отзеркаль относительно главной диагонали
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38167 / 21102 / 4307
Регистрация: 12.02.2012
Сообщений: 34,690
Записей в блоге: 14
14.11.2021, 08:49
Очень глупый алгоритм! Считать симметричные пары - долго и не нужно. Как только нашел несимметричную пару - все! Матрица несимметрична! return! А уж формула

C++
1
if (k == (pow(N, 2) - N) / 2)
"доставляет" особо! Студента можно распознать сразу - по болезненному пристрастию к pow! Не проще ли так:

C++
1
if (k==(N*N-N)/2)
C++
1
2
3
4
5
6
7
int isSymmetric(int **matr, int n)
{
    for (int i=0; i<n-1; i++)
         for (int j=0; j<n; j++)
              if (matr[i][j] != matr[j][i]) return 0;
    return 1;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
14.11.2021, 08:49
Помогаю со студенческими работами здесь

Как сделать чтобы выводилась матрица без смещения?
var g: array of integer; x, t, n, m: integer; begin for x := 0 to 10 do begin for t := 0 to 10 do ...

как сделать таблицу в исходнике, чтобы она выводилась на экран? вот код. нужно, чтобы в одной колонке был Х ,
Код в С #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include &lt;math.h&gt; int main() { float x,xk,dx,a,y,e; x = 2.2; xk = 7.3; dx =...

Нужно чтоб матрица выводилась через динамический массив
#include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include &lt;conio.h&gt; int main() { /*int A = { { 0, 1, 0 }, ...

Как сделать, чтобы заставка выводилась только на главной странице
Здравствуйте! Нужна помощь! Делаю сайт на drupal. Скажите, пожалуйста, как оставить заставку с девушкой только на главной странице сайта, а...

Можно ли сделать условие чтобы выводилась только одна надпись?
Можно ли сдлеать такое условие, чтобы в случае невыполнения одного из кодов выходила только одна надпись static void Main(string...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru