Поиск в массиве без подключения строковых функций - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Нет совпадений, что я делаю не правильно?
Листинг программы
  1. #include <stdio.h>
  2. int main()
  3. {
  4. char str[10];
  5. char bolt[][10] = {"table", "window", "picture", "stone"};
  6. printf("%s", "Введите искомое слово: ");
  7. fgets(str, sizeof(str), stdin);
  8. for (int i = 0; i <= (sizeof(bolt)/10); i++)
  9. {
  10. if(str == bolt[i])
  11. {
  12. printf("Слово %s найдено в базе\n", str);
  13. return 0;
  14. }
  15. }
  16. printf("Слово %s не найдено в базе\n", str);
  17. return 0;
  18. }

Решение задачи: «Поиск в массиве без подключения строковых функций»

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #define N 10
  4. #define M 4
  5. int main()
  6. {
  7.     char bolt[M][N] = {
  8.                 "table",
  9.                 "window",
  10.                 "picture",
  11.                 "stone",
  12.         };
  13.     char str[N];
  14.     int i, j, flag;
  15.     puts("Enter source word:");
  16.     fgets(str, N, stdin);
  17.     for(i = 0; i < N; i++){//в введенном слове заменяем \n на \0
  18.         if(str[i] == '\n')
  19.             str[i] = '\0';
  20.     }
  21.     for(j = 0; j < M; j++){
  22.         flag = 0;
  23.         for(i = 0; i < N && str[i] != '\0'; i++){//сверяем слова посимвольно
  24.             if(str[i] != bolt[j][i]){
  25.                 flag = 1;break;
  26.             }
  27.         }
  28.         if(!flag && str[i] == '\0' && bolt[j][i] == '\0'){//если все буквы совпали и слова закончились одновременно
  29.             printf("The array has word '%s'.", str);
  30.             exit(0);
  31.         }
  32.     }
  33.     printf("The word '%s' not found.", str);//если не было выхода из программы по совпадению
  34.     return 0;                                //значит слова не совпали
  35. }

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

  1. Включаются заголовочные файлы stdio.h и stdlib.h
  2. Определяются константы N и M (размеры массива)
  3. Создается массив bolt[M][N] с некоторыми строками
  4. Создается пустая строка str[N]
  5. Создаются и инициализируются переменные i, j и flag
  6. Выводится приглашение для ввода исходного слова
  7. С помощью функции fgets(), введенное слово сохраняется в строку str[N]
  8. В цикле заменяются все символы \n на \0 в строке str[N]
  9. В цикле проверяются все слова массива bolt[M][N] на совпадение с введенным словом
  10. Если символы в текущей позиции i совпадают, то продолжается проверка следующего символа, иначе устанавливается флаг = 1 и выполняется переход к следующей итерации внешнего цикла
  11. Если после проверки всех слов массива bolt[M][N] совпадение не найдено, то выводится сообщение об отсутствии искомого слова
  12. Возвращается 0, что означает успешный конец работы программы

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


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

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

6   голосов , оценка 3.667 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы