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

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

Войти
Регистрация
Восстановить пароль
 
Melany
21 / 4 / 0
Регистрация: 05.07.2015
Сообщений: 126
#1

Проверить принадлежит ли первая матрица второй - C++

12.08.2015, 13:40. Просмотров 179. Ответов 5
Метки нет (Все метки)

Здравствуйте, подскажите пожалуйста, а то я не могу понять что именно нужно сделать в задании,
"Даны две произвольные матрицы. Проверить принадлежит ли первая из них второй",
насколько я понимаю тут нужно чтоб все элементы первой матрицы присутствовали во второй?

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

Как проверить подстра ли первая введённая строчка второй строчки - C++
Как проверить подстра ли первая введённая строчка второй строчки? Есть ли в С++ функция такая как strcmp или strlen?

Является ли первая строка циклическим сдвигом второй строки - C++
Привет всем. Помогите пожалуйста написать код: нужно проверить, есть ли первая строка (с клавиатуры) циклическим сдвигом второй строки...

Вычислить количество строк, первая половина которых совпадает со второй - C++
Помогите решить следующую задачку: Предполагается, что в файле записана последовательность символов, разбитая управляющим символом \n...

В заданном тексте (первая строка) подсчитать количество буквосочетания, введенного во второй строке - C++
В заданном тексте (первая строка) подсчитать количество буквосочетания, введенного во второй строке. Помогите ,пожалуйста!Заранее...

Сравнить даты: в случае если первая дата больше второй - выводить 1, в остальных случаях - 0. - C++
Здравствуйте , извиняюсь за глупый вопрос . Имеются 2 массива с 3-мя элементами в каждом . Первый элемент - год , второй - месяц , третий...

Проверить, принадлежит ли одна из матриц другой - C++
Тема: Функции 11. Пусть даны две произвольные матрицы. Проверить первая из них принадлежит другой.

5
Даценд
Модератор
Эксперт .NET
3326 / 3247 / 1656
Регистрация: 20.04.2015
Сообщений: 5,935
12.08.2015, 13:48 #2
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Думаю, что не так все просто. Чтобы первая матрица принадлежала второй, нужно чтобы было так:
Первая матрица:
0 2 0
0 2 0
Вторая матрица:
1 1 1 1 1
1 0 2 0 1
1 0 2 0 1
1 1 1 1 1
1
Melany
21 / 4 / 0
Регистрация: 05.07.2015
Сообщений: 126
12.08.2015, 13:53  [ТС] #3
Спасибо, то есть по центру должны быть элементы, или возможен вариант:
Первая матрица:
0 2 0
0 2 0
Вторая матрица:
1 1 1 1 1
1 1 0 2 0
1 1 0 2 0
1 1 1 1 1
0
ture
441 / 334 / 126
Регистрация: 27.11.2014
Сообщений: 1,042
12.08.2015, 13:53 #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
79
#include <iostream>
using std::cout;
using std::endl;
using std::cin;
 
bool contains(int**, int, int, int**, int, int);
 
int main() {
    setlocale(LC_ALL, "rus");
    //строим первую матрицу
    cout << "Укажите размер  MxN матрицы A - ";
    int m1, n1;
    cin >> m1 >> n1;
    int ** A = new int*[m1];
 
    cout << "Заполнение:\n";
    for(int i = 0; i < m1; i++) {
        A[i] = new int[n1];     
        cout << "Элементы строки " << i + 1 << ": ";
        for(int j = 0; j < n1; j++) 
            cin >> A[i][j];             
    }
 
    //строим вторую матрицу
    cout << "Укажите размер  MxN матрицы B - ";
    int m2, n2;
    cin >> m2 >> n2;
    int ** B = new int*[m2];
 
    cout << "Заполнение:\n";
    for(int i = 0; i < m2; i++) {
        B[i] = new int[n2];
        cout << "Элементы строки " << i + 1 << ": ";
        for(int j = 0; j < n2; j++)
            cin >> B[i][j];
    }
 
    if(contains(A, m1, n1, B, m2, n2))
        cout << "Матрица B содержит A.\n";
    else
        cout << "Матрица B не содержит A.\n";
 
 
    //досвидос
    for(int i = 0; i < m1; i++) {
        delete[] A[i];
    }
    delete[] A;
    for(int i = 0; i < m2; i++) {
        delete[] B[i];
    }
    delete[] B;
    system("pause");
    return 0;
}
 
bool contains(int** A, int m1, int n1, int** B, int m2, int n2) {
    bool isOk = false;
 
    if(m1 > m2) 
        isOk = false;
    else if(n1 > n2) 
        isOk = false;
    else {
        for(int i = 0; i < m2;i++)
            for(int j = 0; j < n2; j++) {
                if(i + m1 - 1 < m2 && j + n1 - 1 < n2) {
                    isOk = true;
                    for(int k = 0; isOk && k < m1; k++)
                        for(int t = 0; isOk && t < n1; t++)
                            if(B[i + k][j + t] != A[k][t])
                                isOk = false;
                    if(isOk) return isOk;
                }
            }
    }
 
    return isOk;
}
1
Даценд
Модератор
Эксперт .NET
3326 / 3247 / 1656
Регистрация: 20.04.2015
Сообщений: 5,935
12.08.2015, 13:54 #5
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Melany,
матрица 1 может располагаться в любом месте матрицы 2
1
Melany
21 / 4 / 0
Регистрация: 05.07.2015
Сообщений: 126
12.08.2015, 14:14  [ТС] #6
ture, спасибо, Вы память выделяете, а потом ее удаляете, я пока этого не учила и оператор contain тоже, к сожалению, так что мне придется самой подумать над решением, но спасибо за алгоритм

Добавлено через 35 секунд
Даценд, Спасибо, за помощь, сейчас подумаю над решением,,,
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.08.2015, 14:14
Привет! Вот еще темы с ответами:

Проверить, принадлежит ли число ряду фибоначчи - C++
как проверить принадлежит ли число ряду фибоначчи ?

Нужно проверить принадлежит точка выбранной области - C++
Нужно проверить принадлежит точка выбранной области. Мну начал решать, но я понимаю что там ещё должно быть одно условие, но не знаю как...

Проверить, принадлежит ли введенная точка заданной области - C++
Помогите с программой, очень нужно! Разработка алгоритма решения Первым шагом алгоритма должен быть ввод координат точки: x и...

Геометрия (проверить, принадлежит ли третья точка кругу!) - C++
Отрезок прямой задан двумя точками и есть радиусом круга с центром в первой точке, приверить принадлежит ли третья точка кругу!


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

Или воспользуйтесь поиском по форуму:
6
Yandex
Объявления
12.08.2015, 14:14
Ответ Создать тему
Опции темы

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