Каков алгоритм поиска подмассива в массиве - 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); - вывод результата работы функции - - пустая строка