Поменять первое слово максимальной длины и последнее слово минимальной длины - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Отсортировать по убыванию слова любого предложения. Поменять первое слово максимальной длины и последнее слово минимальной длины

Решение задачи: «Поменять первое слово максимальной длины и последнее слово минимальной длины»

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <ctype.h>
  3. #define  swap_type(a, b, t) \
  4. (t) = (a);\
  5. (a) = (b);\
  6. (b) = (t)
  7.  
  8. //обменять длинное слово с коротким
  9. char* swap_min_max(char* s){
  10.     char*  p, *p1, *p2, c, *t;
  11.     size_t i, n1 = 0, n2 = (size_t)-1;
  12.    
  13.     for(p1 = p2 = NULL, t = s; *s; s = p){
  14.         while(*s && ! isalpha(*s))
  15.             ++s;
  16.         p = s;
  17.         while(isalpha(*p))
  18.             ++p;
  19.  
  20.         i = (size_t)(p - s);
  21.         if(i > n1){
  22.             n1 = i;
  23.             p1 = s;
  24.         }
  25.         if((i > 0) && (i <= n2)){
  26.             n2 = i;
  27.             p2 = s;
  28.         }
  29.     }
  30.  
  31.     if((p1 == NULL) || (p2 == NULL) || (p1 == p2))
  32.         return t;
  33.  
  34.     if(p1 > p2){
  35.         swap_type(p1, p2, p);
  36.         swap_type(n1, n2, i);
  37.     }
  38.  
  39.     for(i = 0; i < n2; ++i, ++p2, ++p1){
  40.         for(p = p2; p > p1; --p){
  41.             swap_type(*p, *(p - 1), c);
  42.         }
  43.     }
  44.     for(--p2, i = 0; i < n1; ++i){
  45.         for(p = p1; p < p2; ++p){
  46.             swap_type(*p, *(p + 1), c);
  47.         }
  48.     }
  49.     return t;
  50. }
  51.  
  52. int main(void){
  53.     char s[] = "Lisp, Snobol, Cobol. [Java]";
  54.     puts( s );
  55.     puts( swap_min_max(s) );
  56.     return 0;
  57. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 4.133 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы