0 / 0 / 0
Регистрация: 25.09.2019
Сообщений: 13
1

Проверить строки матрицы на симметричность

13.11.2019, 21:21. Показов 7417. Ответов 4
Метки нет (Все метки)

Задана матрица размером NxM. Получить массив B, присвоив его k-му
элементу значение 1, если k-я строка матрицы симметрична, и значение 0 − в
противном случае.
Зыж что такое "строка матрицы симметрична" ?
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.11.2019, 21:21
Ответы с готовыми решениями:

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

Проверить симметричность числа
Дано четырехзначное число. Определите, является ли его десятичная запись симметричной. Если число...

Проверить симметричность матрицы относительно побочной диагонали
Определить, является ли заданная квадратная матрица n-го порядка симметричной относительно побочной...

Проверка строки матрицы на симметричность
Как проверить строку матрицы на симметричность, если строка симметрична то в вектор b занести 1...

4
7421 / 5016 / 2890
Регистрация: 18.12.2017
Сообщений: 15,694
13.11.2019, 21:27 2
Цитата Сообщение от Андрей Веренич Посмотреть сообщение
что такое "строка матрицы симметрична" ?
левая часть зеркально соответствует правой, например
5 4 7 1 7 4 5 - симметрична
2 4 4 2 - симметрична
1 2 1 3 1 - не симметрична
1
0 / 0 / 0
Регистрация: 25.09.2019
Сообщений: 13
13.11.2019, 21:58  [ТС] 3
1. объявляем N,M,k. целые положительные числа.
2. запрашиваем N, M, k
3. k не должно быть больше N, для этого делаем процедуру проверки. если больше- уведомление на экран и повторный запрос k.
4.объявляем матрицу NxM и заполняем ее либо вручную, либо rand().
5.находим k—тую строку и проверяем ее на симметричность:
левая часть зеркально соответствует правой, например
5 4 7 1 7 4 5 - симметрична
2 4 4 2 - симметрична
1 2 1 3 1 - не симметрична
6. объявляем массив В с колличеством N элементов.
7. присваиваем В(k) 1 если симметрична, иначе 0.
0
0 / 0 / 0
Регистрация: 25.09.2019
Сообщений: 13
15.11.2019, 00:19  [ТС] 4
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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
#include "stdafx.h"
#include <iostream>
#include <ctime>
#include <iomanip>
using namespace std;
 
int main()
{
    int N, M, k,j,f,i;
 
    do
    {
    cout << "Chisla dolgni bit' >=1\n";
    cout << "Vvedite N\n";
    cin >> N ;
    }while (N<1);
    
    
    do
    {
    cout << "Chisla dolgni bit' >=1\n";
    cout << "Vvedite M\n";
    cin >> M;
    }while (M<1);
    
    
 
srand(time(0)); // генерация случайных чисел
    // динамическое создание двумерного массива вещественных чисел на NxMщ элементов
    
int *B = new int[N]; //создание массива В длинной N
 
    int **ptrarray = new int *[N]; // N строк в массиве
    for (int count = 0; count < N; count++)
        ptrarray[count] = new int[M]; // и M столбцов
    // заполнение массива
    for (int count_row = 0; count_row < N; count_row++)
        for (int count_column = 0; count_column < M; count_column++)
            ptrarray[count_row][count_column] = (rand() % 10 + 1) / int((rand() % 10 + 1)); //заполнение массива случайными числами с масштабированием от 1 до 10
    // вывод массива
    for (int count_row = 0; count_row < N; count_row++)
    {
        for (int count_column = 0; count_column < M; count_column++)
            cout << setw(4) << setprecision(2) << ptrarray[count_row][count_column] << "   ";
        cout << endl;
    }
    
    do
    {
        cout << "Vvedite 0<=k<="<< " "<<N-1 << "  \n";
        cin >> k;
    } while (k >N-1|| k<0);
j=abs(M/2); // счетчик симметричных элементов в k-той строке
f=M-1; //  указатель правого элемента k-той строки 
i=0;
// i указатель левого элемента этойже строки
 while (ptrarray[ k ] [ i ] == ptrarray [ k ] [ f ] && j>0) 
 {
j--,i++,f--;
 
 }
if (  j==0)
{
    B [ k ]= 1;
}else 
{
    B [ k ]= 0;
}
cout  << "B [ k ] =  " << B [ k ] << " \n";
 
 
    // удаление двумерного динамического массива и массива В
    for (int count = 0; count < N; count++)
        delete[] ptrarray[count];
        delete [] B;
    system("pause");
    return 0;
}
Добавлено через 29 минут
Проверте, плиз.
0
7421 / 5016 / 2890
Регистрация: 18.12.2017
Сообщений: 15,694
15.11.2019, 00:33 5
Лучший ответ Сообщение было отмечено Андрей Веренич как решение

Решение

Андрей Веренич, k вводить не нужно
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
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
 
bool SymmetricRow (int *A, int m)
{
    for (int i = 0; i < m/2; i++)    
        if(A[i]!=A[m-1-i]) return false;     
    return true;
}
 
int main()
{
    srand((int)time(0));
    int n, m;
    cout << "n="; cin >> n;
    cout << "m="; cin >> m;
    
      int **A = new int*[n]; 
    for (int i = 0; i < n; i++)
       A[i]=new int[m];
       
       int *B = new int[n];
       
    cout << "Enter "<< n*m << " elements:\n";
    for (int i = 0; i < n; i++)
    for (int j = 0; j < m; j++)
      cin >> A[i][j];
 
    cout << "Array B:\n";   
    for (int i = 0; i < n; i++)
    {
    if (SymmetricRow(A[i],m)) B[i]=1;
    else B[i]=0;
    cout << B[i] << " ";
    }
    cout << "\n";
    
    for (int i = 0; i < n; i++)    
    delete[]A[i];   
    delete[]A;    
    delete[]B;
system("pause");
return 0;
}
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.11.2019, 00:33
Помогаю со студенческими работами здесь

Проверить на симметричность
Проверить целочисленную матрицу NxM на симметричность относительно строк. Как объяснил...

проверить симметричность отношения
Здравствуйте! Подскажите плз, как проверить отношение на симметричность. Я сделал так :...

Проверить k строку массива N*M на симметричность
Проверить k строку массива N*M на симметричность int begin=0,end=m; char polindrom=true; ...

Проверить функции на периодичность и симметричность
1) y=sin(ln(x)) 2) y=cos(x2-x-1) как их проверить на периодичность и симметричность?

Как проверить симметричность в массиве строк?
Дан массив строк.Если стока симметрична,то... Подскажите как проверить симметричность в массиве...

Проверить матрицу на рефлексивность, симметричность и транзитивность
Ошибка: массив имеет другое количество размерностей Задание: проверить матрицу на рефлексивность,...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru