Поменять первое слово максимальной длины и последнее слово минимальной длины - C (СИ)
Формулировка задачи:
Отсортировать по убыванию слова любого предложения. Поменять первое слово максимальной длины и последнее слово минимальной длины
Решение задачи: «Поменять первое слово максимальной длины и последнее слово минимальной длины»
textual
Листинг программы
#include <stdio.h> #include <ctype.h> #define swap_type(a, b, t) \ (t) = (a);\ (a) = (b);\ (b) = (t) //обменять длинное слово с коротким char* swap_min_max(char* s){ char* p, *p1, *p2, c, *t; size_t i, n1 = 0, n2 = (size_t)-1; for(p1 = p2 = NULL, t = s; *s; s = p){ while(*s && ! isalpha(*s)) ++s; p = s; while(isalpha(*p)) ++p; i = (size_t)(p - s); if(i > n1){ n1 = i; p1 = s; } if((i > 0) && (i <= n2)){ n2 = i; p2 = s; } } if((p1 == NULL) || (p2 == NULL) || (p1 == p2)) return t; if(p1 > p2){ swap_type(p1, p2, p); swap_type(n1, n2, i); } for(i = 0; i < n2; ++i, ++p2, ++p1){ for(p = p2; p > p1; --p){ swap_type(*p, *(p - 1), c); } } for(--p2, i = 0; i < n1; ++i){ for(p = p1; p < p2; ++p){ swap_type(*p, *(p + 1), c); } } return t; } int main(void){ char s[] = "Lisp, Snobol, Cobol. [Java]"; puts( s ); puts( swap_min_max(s) ); return 0; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д