Поиск в массиве без подключения строковых функций - C (СИ)
Формулировка задачи:
Нет совпадений, что я делаю не правильно?
Листинг программы
- #include <stdio.h>
- int main()
- {
- char str[10];
- char bolt[][10] = {"table", "window", "picture", "stone"};
- printf("%s", "Введите искомое слово: ");
- fgets(str, sizeof(str), stdin);
- for (int i = 0; i <= (sizeof(bolt)/10); i++)
- {
- if(str == bolt[i])
- {
- printf("Слово %s найдено в базе\n", str);
- return 0;
- }
- }
- printf("Слово %s не найдено в базе\n", str);
- return 0;
- }
Решение задачи: «Поиск в массиве без подключения строковых функций»
textual
Листинг программы
- #include <stdio.h>
- #include <stdlib.h>
- #define N 10
- #define M 4
- int main()
- {
- char bolt[M][N] = {
- "table",
- "window",
- "picture",
- "stone",
- };
- char str[N];
- int i, j, flag;
- puts("Enter source word:");
- fgets(str, N, stdin);
- for(i = 0; i < N; i++){//в введенном слове заменяем \n на \0
- if(str[i] == '\n')
- str[i] = '\0';
- }
- for(j = 0; j < M; j++){
- flag = 0;
- for(i = 0; i < N && str[i] != '\0'; i++){//сверяем слова посимвольно
- if(str[i] != bolt[j][i]){
- flag = 1;break;
- }
- }
- if(!flag && str[i] == '\0' && bolt[j][i] == '\0'){//если все буквы совпали и слова закончились одновременно
- printf("The array has word '%s'.", str);
- exit(0);
- }
- }
- printf("The word '%s' not found.", str);//если не было выхода из программы по совпадению
- return 0; //значит слова не совпали
- }
Объяснение кода листинга программы
- Включаются заголовочные файлы stdio.h и stdlib.h
- Определяются константы N и M (размеры массива)
- Создается массив bolt[M][N] с некоторыми строками
- Создается пустая строка str[N]
- Создаются и инициализируются переменные i, j и flag
- Выводится приглашение для ввода исходного слова
- С помощью функции fgets(), введенное слово сохраняется в строку str[N]
- В цикле заменяются все символы \n на \0 в строке str[N]
- В цикле проверяются все слова массива bolt[M][N] на совпадение с введенным словом
- Если символы в текущей позиции i совпадают, то продолжается проверка следующего символа, иначе устанавливается флаг = 1 и выполняется переход к следующей итерации внешнего цикла
- Если после проверки всех слов массива bolt[M][N] совпадение не найдено, то выводится сообщение об отсутствии искомого слова
- Возвращается 0, что означает успешный конец работы программы
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д