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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Указатель на массив. Приведение типов http://www.cyberforum.ru/cpp-beginners/thread1513638.html
Всем привет, есть вопрос. Указатель на массив и указатель на его первый элемент равны, #include <iostream> int main() // код рабочий { int mas= {1,2,3,4}; int (*ptr),*fp;
C++ Какие требования WriteConsoleOutputCharacter? Доброгов времени суток. Я пишу cpu рендерер obj моделей, который просто их вращает. Но не просто рендерер, а рендерер в консоль. Все то же самое, но вместо пикселов символы. Мне удалось добиться... http://www.cyberforum.ru/cpp-beginners/thread1513595.html
C++ Передача указателя по ссылке
Так печатается "12" #include "stdafx.h" #include <iostream> using namespace std; void somefunction(int*&); int _tmain(int argc, _TCHAR* argv)
C++ Чтение текстового файла
Знакомлюсь с чтением текстового файла. Изначально была такая программа: #include<iostream> using namespace std; struct spip { char name; double sum; };
C++ Как узнать индекс вхождения подстроки в строку? http://www.cyberforum.ru/cpp-beginners/thread1513572.html
Как задать шаблон строки? Объясню на примере: мне надо узнать индекс подстроки в строке, используя, например, String::IndexOf(String). Искомая подстрока имеет вид "=", т.е. состоит из двух символов...
C++ Ошибка в сортировке массива #include <cmath> #include <iostream> using namespace std; void sort(int n); void swap(int *p1,int *p2); int a; int main(){ int i; for(i=0; i<7; i++){ cout<<"введите "<< i << "... подробнее

Показать сообщение отдельно
ture
441 / 334 / 126
Регистрация: 27.11.2014
Сообщений: 1,042
12.08.2015, 13:53
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
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru