Каков алгоритм поиска подмассива в массиве - C (СИ)
Формулировка задачи:
Добрый день.
дан первый массив
123
456
789
дан второй массив
1231231234
4564554567
7817897892
массив найден 1 раз
Каков алгоритм для таких примеров причем массивы могут изменятся по величине?
Решение задачи: «Каков алгоритм поиска подмассива в массиве»
textual
Листинг программы
int main(void) { int n; int N1,M1; int N2,M2; int mas1[N][N+1]; int mas2[N][N+1]; printf("Задайте количество рядов матрицы:\n"); if(scanf("%d",&n) !=1){ //значение n считали с клавиатуры. printf("Неправильный ввод\n"); return 0; } if(N<n){// мы сравниваем N и n , а что у нас в N? printf("Неправильный ввод\n"); return 0; } printf("Введите матрицу:\n"); for(N1=0;N1<n;N1++) for(M1=0;M1<n;M1++) if(scanf("%d",&mas1[N1][M1]) !=1){ printf("Неправильный ввод\n"); return 0; } printf("Матрица которая будет просмотрена\n"); for(N2=0;N2<N;N2++)// а что у нас в N? for(M2=0;M2<N;M2++)// а что у нас в N? while(!feof(stdin)) scanf("%d",&mas2[N2][N2]) ; if(N1>N2 || M1>M2){ printf("Неправельный ввод\n"); return 0; } func(mas1,N1,M1,mas2,N2,M2); printf("Количество повторений %d\n",func); }
Объяснение кода листинга программы
Список элементов:
- int main(void) - функция main, тип возвращаемого значения void
- int n; - переменная для хранения количества строк матрицы
- int N1,M1; - переменные для хранения номеров строки и столбца в матрице 1
- int N2,M2; - переменные для хранения номеров строки и столбца в матрице 2
- int mas1[N][N+1]; - массив для хранения первой матрицы, размерность N на N+1
- int mas2[N][N+1]; - массив для хранения второй матрицы, размерность N на N+1
- printf(
Задайте количество рядов матрицы:\n
); - вывод сообщения с просьбой задать количество строк матрицы - if(scanf(
%d
,&n) !=1) - проверка корректности ввода количества строк матрицы - printf(
Неправильный ввод\n
); - вывод сообщения об ошибке ввода - return 0; - выход из программы при ошибке ввода
- if(N<n){ - проверка корректности ввода количества строк матрицы
- printf(
Неправильный ввод\n
); - вывод сообщения об ошибке ввода - return 0; - выход из программы при ошибке ввода
- printf(
Введите матрицу:\n
); - вывод сообщения с просьбой ввести матрицу - for(N1=0;N1<n;N1++) - цикл для ввода элементов первой матрицы
- for(M1=0;M1<n;M1++) - цикл для ввода элементов первой матрицы
- if(scanf(
%d
,&mas1[N1][M1]) !=1) - проверка корректности ввода элемента матрицы - printf(
Неправильный ввод\n
); - вывод сообщения об ошибке ввода - return 0; - выход из программы при ошибке ввода
- printf(
Матрица которая будет просмотрена\n
); - вывод сообщения с информацией о второй матрице - for(N2=0;N2<N;N2++) - цикл для ввода элементов второй матрицы
- for(M2=0;M2<N;M2++) - цикл для ввода элементов второй матрицы
- while(!feof(stdin)) - цикл для ввода элементов второй матрицы
- scanf(
%d
,&mas2[N2][N2]); - ввод элемента второй матрицы - if(N1>N2 || M1>M2) - проверка корректности ввода матриц
- printf(
Неправельный ввод\n
); - вывод сообщения об ошибке ввода - return 0; - выход из программы при ошибке ввода
- func(mas1,N1,M1,mas2,N2,M2); - вызов функции для поиска подмассива
- printf(
Количество повторений %d\n
,func); - вывод результата работы функции - - пустая строка
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д