Собрать строку из букв - C (СИ)
Формулировка задачи:
Нужно найти самую длинную слову из заданного текста,
Для этого в цикле организовал, если как только увидеть пробел, будет сравнивать длину слова до этого максимальной. И надо мне собрать буквы, а программа не понимает, и начинает сложить код букв?
Помогите пож. какую мне надо функцию указать, чтобы Z собрал буквы?
#include<conio.h> #include<stdio.h> #include<string.h> main() { char stri[80], z=' '; int L,i,x=0,y=0; clrscr(); puts("str="); gets(stri); L=strlen(stri); stri[L+1]= ' '; for (i=0; i<L+2; i++) { y++; z=z+stri[i]; ???????????????????? Z должен собрать слова? printf("\n =%c", stri[i]); printf("\n z =%c", z); if(stri[i]== ' ') if(x<y-1) x=y-1,y=0; } printf("\nen usyn soz =%i", x); getch(); }
Решение задачи: «Собрать строку из букв»
textual
Листинг программы
#include <stdio.h> #include <ctype.h> int main(int argc, char **argv) { char text[] = "asdkj lq99 lqwkjd qwo asdajqw444444545454jhwgq65 qu7ygashggggffgf jha asd"; char* ptext = text; char* longest = ptext; int max_length = 0; int curr_length = 0; //--------------------------------------------------------------поиск while(*ptext) { if(isalnum(*ptext++)) { ++curr_length; for(; isalnum(*ptext) && *ptext; ++curr_length, ++ptext); } if(curr_length > max_length) { max_length = curr_length; longest = (ptext - max_length); } curr_length = 0; } //--------------------------------------------------------------вывод while(max_length--) putchar(*longest++); return 0; }
Объяснение кода листинга программы
В этом коде используется язык программирования C. Сначала объявляются переменные:
- text - строка, содержащая текст для обработки.
- ptext - указатель на первый символ в text.
- longest - указатель на самый длинный найденный фрагмент строки.
- max_length - максимальная длина найденного фрагмента.
- curr_length - текущая длина найденного фрагмента. Затем в цикле while с помощью функции isalnum проверяется каждый символ в тексте: если символ является буквой или цифрой, то увеличивается текущая длина найденного фрагмента, и с помощью цикла for добавляются все следующие символы, пока не встретится символ, не являющийся буквой или цифрой. если найденный фрагмент имеет большую длину, чем текущий максимальный фрагмент, то обновляются значения переменных max_length и longest. затем текущая длина сбрасывается в 0. После окончания цикла, в цикле while выводятся символы самого длинного фрагмента, начиная с самого первого символа, с уменьшением длины фрагмента до 0. В конце программы возвращается 0, что означает успешное выполнение.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д