Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 34, средняя оценка - 4.71
_д_м_и_т_р_и_й_
0 / 0 / 0
Регистрация: 11.02.2011
Сообщений: 38
#1

Определить, может ли при перестановке строк одной матрицы получится вторая - C++

15.08.2011, 17:07. Просмотров 4428. Ответов 21
Метки нет (Все метки)

Даны две матрицы одинаковых размеров. Определить, может ли при перестановке строк одной матрицы получится вторая. Помогите пожалуйста реализовать данную программу на Си, потому что сам я пока не могу сделать. Заранее всем спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.08.2011, 17:07
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Определить, может ли при перестановке строк одной матрицы получится вторая (C++):

Может ли получится список тождественный исходному при перемешивании методом random.shuffle() - Python
Может ли при случайном перемешивании массива 1, 2, 3, 4, 5 при помощи метода random.shuffle() получиться массив 1, 2, 3, 4, 5? Нет, не...

Может ли при каких либо условиях вторая квадратичная форма равняться нулю? - Геометрия
может ли при каких либо условиях вторая квадратичная форма равняться нулю, если да то при каких условиях, и что это означает?

Сделать, чтобы при переходе с одной формы на другую, первая исчезала, а вторая оставалась - Delphi
Подскажите код чтобы при переходе с одной формы на другую. Чтобы первая исчезала ,а вторая оставалась.

При нажатии на кнопку одной формы, у меня должна выскочить вторая...как это написать в процедуре... - Delphi
При нажатии на кнопку одной формы, у меня должна выскочить вторая...как это написать в процедуре??? очень нужно помогите

Получить новую матрицу из произведений минимумов строк одной матрицы и максимумов столбцов другой матрицы - Pascal ABC
Пусть даны две вещественные матрицы порядка n. Получите новую мат- рицу следующим способом (для нахождения минимального элемента и...

Создать матрицы А[n,m] и B[n,m]. Определить суммы строк каждой матрицы.Переставить строки по возрастанию сумм строк в каждой матрице. - Pascal
Создать матрицы А и B. Определить суммы строк каждой матрицы. Переставить строки по возрастанию сумм строк в каждой матрице. ...

21
Jupiter
Каратель
Эксперт С++
6559 / 3980 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
15.08.2011, 17:11 #2
Цитата Сообщение от _д_м_и_т_р_и_й_ Посмотреть сообщение
потому что сам я пока не могу сделать
почему? хоть какие-то нароботки есть?
0
_д_м_и_т_р_и_й_
0 / 0 / 0
Регистрация: 11.02.2011
Сообщений: 38
15.08.2011, 17:28  [ТС] #3
я ток неделю изучаю Си. да я представляю что нужно построчно сравнивать матрицы. но как это реализовать не пойму.
0
LosAngeles
Заблокирован
15.08.2011, 17:30 #4
куда ты торопишься, открой книжечку, почитай
0
Jupiter
Каратель
Эксперт С++
6559 / 3980 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
15.08.2011, 17:35 #5
C
1
2
3
4
5
6
7
8
9
10
11
12
int matr1[N][N] = {...},
    matr2[N][N] = {...};
//...
int i, j, equal = 1; //equal == 1 - matrix equal
for (i = 0; i < N && equal; ++i)
{
    for (j = 0; j < N && equal; ++j)
    {
        if (matr1[j][i] != matr2[i][j])
            equal = 0;
    }
}
0
LosAngeles
Заблокирован
15.08.2011, 17:39 #6
break надо делать в таких случаях*
0
Jupiter
Каратель
Эксперт С++
6559 / 3980 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
15.08.2011, 17:40 #7
Цитата Сообщение от LosAngeles Посмотреть сообщение
break надо делать в таких случаях*
сдесь и флага достаточно
0
paskal
445 / 294 / 26
Регистрация: 15.08.2011
Сообщений: 878
15.08.2011, 17:41 #8
Цитата Сообщение от _д_м_и_т_р_и_й_ Посмотреть сообщение
Даны две матрицы одинаковых размеров. Определить, может ли при перестановке строк одной матрицы получится вторая. Помогите пожалуйста реализовать данную программу на Си, потому что сам я пока не могу сделать. Заранее всем спасибо.
Уточните известен ли размер и количество строк матриц.
0
LosAngeles
Заблокирован
15.08.2011, 17:41 #9
без него быстрее
0
-=ЮрА=-
Заблокирован
Автор FAQ
15.08.2011, 17:48 #10
Берём строку, сравниваем с каждой из строк 2-й матрицы, если есть такая же, переходим к другой строке, в итоге либо перебрав все строки 1-й матрицы поймём что они есть во 2-й либо какая та строка не будет содержаться - тогда матрицы не эквивалентны, вот кот и скриншот работы
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
#include <iostream.h>
 
bool get_row(int rows, int cols, int ** matr, int * row);
void showrow(int cols, int *row);
 
int main()
{
    cout<<"Enter num of rows: ";
    int rows;cin>>rows;
    cout<<"Enter num of cols: ";
    int cols;cin>>cols;
 
    int ** matr1 = new int *[rows];
    int ** matr2 = new int *[rows];
 
    cout<<"Enter matrixes\r\n";
    for(int i = 0,j; i < rows; i++)
    {
        matr1[i] = new int[cols];
        matr2[i] = new int[cols];
        for(j = 0; j < cols; j++)
        {
            cout<<"matr1["<<i + 1<<"]["<<j + 1<<"] = ";
            cin>>matr1[i][j];
            cout<<"matr2["<<i + 1<<"]["<<j + 1<<"] = ";
            cin>>matr2[i][j];
        }
    }
    bool is_row = false;
    cout<<"\tmatr1\r\n";
    for(i = 0; i < rows; i++)
        showrow(cols, matr1[i]);
    cout<<"\tmatr2\r\n";
    for(i = 0; i < rows; i++)
        showrow(cols, matr2[i]);
    for(i = 0; i < rows; i++)
    {
        if(!(is_row = get_row(rows, cols, matr1, matr2[i])))
            break;
    }
    if(is_row && i == rows)
        cout<<"rows in matr2 is can be sorted in rows of matr1";
    else
        cout<<"matr1 not equal matr2\r\n";
    cout<<"Press any key to continue\r\n";
    char ch;cin>>ch;
    return 0;
}
 
bool get_row(int rows, int cols, int ** matr, int * row)
{
    bool ret = false;
    for(int i = 0,j, n; i < rows; i++)
    {
        n = 0;
        for(j = 0; j < cols; j++)
        {
            if(matr[i][j] == row[j])
                n++;
            else
                break;
        }
        if(n == cols)
            ret = true;
        if(ret)
            break;
    }
    return ret;
}
 
void showrow(int cols, int *row)
{
    for(int j = 0; j < cols; j++)
        cout<<row[j]<<" ";
    cout<<"\r\n";
}
0
Миниатюры
Определить, может ли при перестановке строк одной матрицы получится вторая  
-=ЮрА=-
Заблокирован
Автор FAQ
15.08.2011, 17:52 #11
Цитата Сообщение от Maxwe11 Посмотреть сообщение
if (matr1[j][i] != matr2[i][j])
- чё за бред сравниваем элементы в строках и столбцах например для i = 2 j = 3
matr[2][3] != matr[3][2] -

Добавлено через 2 минуты
Maxwe11, обрати внимание
Цитата Сообщение от _д_м_и_т_р_и_й_ Посмотреть сообщение
Определить, может ли при перестановке строк одной матрицы получится вторая.
- если перестановка строк, значит порядок элементов в них должен быть одинаков, нужно рассмотреть лишь вхождения этих строк в матрице для анализа
0
_д_м_и_т_р_и_й_
0 / 0 / 0
Регистрация: 11.02.2011
Сообщений: 38
15.08.2011, 17:53  [ТС] #12
размеры могут вводиться как с клавиатуры так и быть константами.
0
Jupiter
Каратель
Эксперт С++
6559 / 3980 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
15.08.2011, 17:55 #13
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
- чё за бред сравниваем элементы в строках и столбцах например для i = 2 j = 3
matr[2][3] != matr[3][2] -
угу) мне чего-то транспонирование стукнуло в голову
1
-=ЮрА=-
Заблокирован
Автор FAQ
15.08.2011, 17:57 #14
Дмитрий, ты мой код смотрел?
Определить, может ли при перестановке строк одной матрицы получится вторая
Программа отработала и для варианта матриц
123
456
789

456
123
789
1
_д_м_и_т_р_и_й_
0 / 0 / 0
Регистрация: 11.02.2011
Сообщений: 38
15.08.2011, 18:00  [ТС] #15
смотрел, но он на С++ а мне надо на С, потому что С++ для меня темный лес.
0
15.08.2011, 18:00
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.08.2011, 18:00
Привет! Вот еще темы с ответами:

Определить может ли конь перейти с одной шахматной доски на другую - Turbo Pascal
Даны координаты (как целые от 1 до 8) двух различных полей шахматной доски. Если конь за один ход может перейти с одной доски на другую то...

Почему в IDE может не получится после компиляции исполняемый файл? - C Linux
В статье про установку CodeBlocks написано, что если при его установке поставить галку в строке MinGW то он (MinGW) установится сразу...

Найти последовательность слов из которых может получится заданное слово - JavaScript
Даны заданное слово и непустая последовательность слов (одномерный символьный массив): между словами запятые или пробелы, в конце точка. В...

Какова вероятность, что на карточка вынутых по одной получится 325? - Теория вероятностей
Какова вероятность, что на трех карточкаx, вынутых по одной и положенных в порядке их появления получим число 325, если всего карточек...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru