Найти самое длинное слово заданного предложения - C (СИ) (76667)
Формулировка задачи:
СИ Строки
Найти самое длинное слово заданного предложения.
Алгоритм:
1) найти начало слова
2) найти конец слова
3) искать до тех пор пока не найдёт конец
4) переписать в отдельный массив
Не могу найти ошибку
#include<stdio.h> #include<conio.h> #include<string.h> void main() { int i=0,j, h,g; char s[100]; char c[100]; printf("vvedite stroku\n"); gets(s); while(s[i]='\0'){ //ищем начало while(s[i]==' '||s[i]==','||s[i]=='.') i++;j=i; //ищем конец слова while(s[j]!=' '&&s[j]!=','&&s[j]!='.') j++; for(g=i,h=0;g=i;h++,g++){ c[h]=s[g]; } puts(c); return 0; } }
Решение задачи: «Найти самое длинное слово заданного предложения»
textual
Листинг программы
#include <stdio.h> #include <string.h> #define DELIM " \t\n" int main(void) { char buf[BUFSIZ], * pLongest, * pCurrent; while ( printf("String: ") && fgets(buf, BUFSIZ, stdin) && *buf != '\n' ) { if ( ! ( pLongest = strtok(buf, DELIM) ) ) { fprintf(stderr, "String is empty!\n"); continue; } while ( pCurrent = strtok(NULL, DELIM) ) if ( strlen(pLongest) < strlen(pCurrent) ) pLongest = pCurrent; printf("First longest word: %s\n", pLongest); } return 0; }
Объяснение кода листинга программы
- Подключение необходимых библиотек для работы с файлами и строками.
- Определение строки-разделителя.
- Объявление переменных: — buf — буфер для чтения строки из стандартного ввода; — pLongest — указатель на самое длинное слово; — pCurrent — указатель на текущее слово.
- Цикл, который повторяется до тех пор, пока пользователь не введет пустую строку или не отправит сигнал конца файла.
- Проверка на пустую строку и очистка буфера.
- Проверка, является ли текущее слово самым длинным. Если нет, то поиск самого длинного слова продолжается.
- Вывод самого длинного слова на экран.
- В конце программы возвращается 0, что означает успешное завершение работы программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д