Каков алгоритм поиска подмассива в массиве - 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);
                 
 
}

Объяснение кода листинга программы

Список элементов:

  1. int main(void) - функция main, тип возвращаемого значения void
  2. int n; - переменная для хранения количества строк матрицы
  3. int N1,M1; - переменные для хранения номеров строки и столбца в матрице 1
  4. int N2,M2; - переменные для хранения номеров строки и столбца в матрице 2
  5. int mas1[N][N+1]; - массив для хранения первой матрицы, размерность N на N+1
  6. int mas2[N][N+1]; - массив для хранения второй матрицы, размерность N на N+1
  7. printf(Задайте количество рядов матрицы:\n); - вывод сообщения с просьбой задать количество строк матрицы
  8. if(scanf(%d,&n) !=1) - проверка корректности ввода количества строк матрицы
  9. printf(Неправильный ввод\n); - вывод сообщения об ошибке ввода
  10. return 0; - выход из программы при ошибке ввода
  11. if(N<n){ - проверка корректности ввода количества строк матрицы
  12. printf(Неправильный ввод\n); - вывод сообщения об ошибке ввода
  13. return 0; - выход из программы при ошибке ввода
  14. printf(Введите матрицу:\n); - вывод сообщения с просьбой ввести матрицу
  15. for(N1=0;N1<n;N1++) - цикл для ввода элементов первой матрицы
  16. for(M1=0;M1<n;M1++) - цикл для ввода элементов первой матрицы
  17. if(scanf(%d,&mas1[N1][M1]) !=1) - проверка корректности ввода элемента матрицы
  18. printf(Неправильный ввод\n); - вывод сообщения об ошибке ввода
  19. return 0; - выход из программы при ошибке ввода
  20. printf(Матрица которая будет просмотрена\n); - вывод сообщения с информацией о второй матрице
  21. for(N2=0;N2<N;N2++) - цикл для ввода элементов второй матрицы
  22. for(M2=0;M2<N;M2++) - цикл для ввода элементов второй матрицы
  23. while(!feof(stdin)) - цикл для ввода элементов второй матрицы
  24. scanf(%d,&mas2[N2][N2]); - ввод элемента второй матрицы
  25. if(N1>N2 || M1>M2) - проверка корректности ввода матриц
  26. printf(Неправельный ввод\n); - вывод сообщения об ошибке ввода
  27. return 0; - выход из программы при ошибке ввода
  28. func(mas1,N1,M1,mas2,N2,M2); - вызов функции для поиска подмассива
  29. printf(Количество повторений %d\n,func); - вывод результата работы функции
  30.                   - пустая строка

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 3.933 из 5
Похожие ответы