Найти самое длинное слово заданного предложения - 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, что означает успешное завершение работы программы.