Поменять первое слово максимальной длины и последнее слово минимальной длины - 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;
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д