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

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

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

Добрый день. Помогите пожалуйста с заданием: Ввести символьную строку. Предпоследнее и последнее слова в строке поменять местами. Без указателей. Как можно проще. Пробовала так:
Листинг программы
  1. #include <stdio.h>
  2. #include <conio.h>
  3. #include <cstring>
  4. int main()
  5. {
  6. long i;
  7. char str[1024] = {0};
  8. printf("\tEnter input string\n");
  9. scanf("%[^\n]",str);
  10. long k;
  11. int a[2];
  12. k=strlen(str);
  13. int j=0;
  14. for(i = k; i != 0;i--){
  15. if(j<=1){
  16. if((str[i] == ' ' || str[i] == '\0') && str[i-1] != ' '){
  17. a[j]=i;
  18. j++;
  19. }
  20. }
  21. }
  22. for (i=0; i<2;i++){
  23. printf("%d\n", a[i]);
  24. }
  25. printf("Press any key to continue\n");
  26. getch();
  27. return 0;
  28. }

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

textual
Листинг программы
  1. #include <stdio.h>
  2. char del[]="\t\n,.!?;: ";
  3. int isdelim(char s)
  4. {
  5.     int i;
  6.     for(i=0; del[i]; ++i)
  7.     {
  8.         if(del[i]==s)return 1;
  9.     }
  10.     return 0;
  11. }
  12. #define N 255
  13. int main(void)
  14. {
  15. char s;
  16. int i, konPrSl, konPosSl, nachPrSl, nachPosSl, c1, c2, j, razn, d, b;
  17.     char str[N]="Lorem ipsum dolor sit amet, consectetur adipiscing";
  18.     for(i = 0; str[i]; ++i);
  19.     --i;
  20.     if(i==-1){printf("Pustaya stroka!\n");return 0;}
  21.     while(isdelim(str[i])){if(i==0){printf("Slova otsutstvuyut!\n");return 0;}--i;}
  22.     konPosSl=i;
  23.     while(!isdelim(str[i])){if(i==0){printf("Odno slovo!\n");return 0;}--i;}
  24.     ++i;
  25.     nachPosSl=i;
  26.     --i;
  27.     while(isdelim(str[i]))--i;
  28.     konPrSl=i;
  29.     while(!isdelim(str[i])){if(i==0){--i; break;}--i;}
  30.     ++i;
  31.     nachPrSl=i;
  32.     c1=konPrSl-nachPrSl+1;
  33.     c2=konPosSl-nachPosSl+1;
  34.     if(c1==c2)
  35.         {
  36.             for(i=nachPrSl, j=nachPosSl; i<konPrSl+1; ++i, ++j)
  37.                 {
  38.                     s=str[i];
  39.                     str[i]=str[j];
  40.                     str[j]=s;
  41.                    
  42.                 }
  43.         }else
  44.             if(c1<c2)
  45.             {
  46.                 for(i=nachPrSl, j=nachPosSl; i<konPrSl+1; ++i, ++j)
  47.                 {
  48.                     s=str[i];
  49.                     str[i]=str[j];
  50.                     str[j]=s;
  51.                 }
  52.                 razn=c2-c1;
  53.                 d=konPrSl+1;
  54.                
  55.                 for(i=0;i<razn; ++i)
  56.                 {
  57.                     b=konPosSl;
  58.                     s=str[konPosSl];
  59.                    
  60.                     for(; b!=d; --b)
  61.                     {
  62.                         str[b]=str[b-1];
  63.                     }
  64.                     str[d]=s;
  65.                 }
  66.             }else
  67.                 {
  68.                     for(i=konPosSl, j=konPrSl; i>nachPosSl-1; --i, --j)
  69.                     {
  70.                         s=str[i];
  71.                         str[i]=str[j];
  72.                         str[j]=s;
  73.                     }
  74.                     razn=c1-c2;
  75.                     d=nachPosSl-1;
  76.                    
  77.                     for(i=0;i<razn; ++i)
  78.                     {
  79.                         b=nachPrSl;
  80.                         s=str[nachPrSl];
  81.                    
  82.                         for(; b!=d; ++b)
  83.                         {
  84.                             str[b]=str[b+1];
  85.                         }
  86.                         str[d]=s;
  87.                     }
  88.                 }
  89.  
  90.     for(i=0; str[i]; ++i)printf("%c", str[i]);
  91.  
  92. return 0;
  93. }

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


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

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

12   голосов , оценка 3.333 из 5

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

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

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