Дана строка, содержащая пробелы. Найдите в ней самое длинное слово, выведите на экран это слово и его длину. - C (СИ)
Формулировка задачи:
Помогите пожалуйста с задачей...
Дана строка, содержащая пробелы. Найдите в ней самое длинное слово, выведите на экран это слово и его длину.
Решение задачи: «Дана строка, содержащая пробелы. Найдите в ней самое длинное слово, выведите на экран это слово и его длину.»
textual
Листинг программы
#include <stdio.h>
#include <string.h>
#include <ctype.h>
int main()
{
char stroka[] = "blah, bla, blabl, a.";
char buff[20];
char *ptr = stroka;
int max = 0, count = 0;
while(*ptr)
{
if (isalpha(*ptr))
{
count++;
}
else
{
if( count > max)
{
max = count;
strcpy(buff,ptr - count);
buff[count] = '\0';
}
count = 0;
}
ptr++;
}
printf("%s[%d]",buff,max);
return 0;
}
Объяснение кода листинга программы
- Подключение необходимых библиотек для работы со строками и символами.
- Объявление и инициализация строки stroka, содержащей пробелы.
- Объявление переменной buff для хранения самого длинного слова.
- Установка начального значения переменной ptr на начало строки stroka.
- Объявление переменных max и count, используемых для отслеживания текущего максимального значения длины слова и количества символов в текущем слове соответственно.
- В цикле while происходит проход по каждому символу строки stroka.
- Если символ является буквой (isalpha), то увеличивается значение переменной count.
- Если символ не является буквой, то проверяется, является ли текущее слово (с символа ptr-count) самым длинным из найденных до этого.
- Если текущее слово является самым длинным, то обновляется значение переменной max, и текущее слово копируется в переменную buff.
- После окончания цикла, выводится на экран самое длинное слово, используя функцию printf, и возвращается 0, что означает успешное завершение программы.