Предпоследнее и последнее слова в строке поменять местами - C (СИ)
Формулировка задачи:
Добрый день. Помогите пожалуйста с заданием:
Ввести символьную строку. Предпоследнее и последнее слова в строке поменять местами.
Без указателей. Как можно проще.
Пробовала так:
Листинг программы
- #include <stdio.h>
- #include <conio.h>
- #include <cstring>
- int main()
- {
- long i;
- char str[1024] = {0};
- printf("\tEnter input string\n");
- scanf("%[^\n]",str);
- long k;
- int a[2];
- k=strlen(str);
- int j=0;
- for(i = k; i != 0;i--){
- if(j<=1){
- if((str[i] == ' ' || str[i] == '\0') && str[i-1] != ' '){
- a[j]=i;
- j++;
- }
- }
- }
- for (i=0; i<2;i++){
- printf("%d\n", a[i]);
- }
- printf("Press any key to continue\n");
- getch();
- return 0;
- }
Решение задачи: «Предпоследнее и последнее слова в строке поменять местами»
textual
Листинг программы
- #include <stdio.h>
- char del[]="\t\n,.!?;: ";
- int isdelim(char s)
- {
- int i;
- for(i=0; del[i]; ++i)
- {
- if(del[i]==s)return 1;
- }
- return 0;
- }
- #define N 255
- int main(void)
- {
- char s;
- int i, konPrSl, konPosSl, nachPrSl, nachPosSl, c1, c2, j, razn, d, b;
- char str[N]="Lorem ipsum dolor sit amet, consectetur adipiscing";
- for(i = 0; str[i]; ++i);
- --i;
- if(i==-1){printf("Pustaya stroka!\n");return 0;}
- while(isdelim(str[i])){if(i==0){printf("Slova otsutstvuyut!\n");return 0;}--i;}
- konPosSl=i;
- while(!isdelim(str[i])){if(i==0){printf("Odno slovo!\n");return 0;}--i;}
- ++i;
- nachPosSl=i;
- --i;
- while(isdelim(str[i]))--i;
- konPrSl=i;
- while(!isdelim(str[i])){if(i==0){--i; break;}--i;}
- ++i;
- nachPrSl=i;
- c1=konPrSl-nachPrSl+1;
- c2=konPosSl-nachPosSl+1;
- if(c1==c2)
- {
- for(i=nachPrSl, j=nachPosSl; i<konPrSl+1; ++i, ++j)
- {
- s=str[i];
- str[i]=str[j];
- str[j]=s;
- }
- }else
- if(c1<c2)
- {
- for(i=nachPrSl, j=nachPosSl; i<konPrSl+1; ++i, ++j)
- {
- s=str[i];
- str[i]=str[j];
- str[j]=s;
- }
- razn=c2-c1;
- d=konPrSl+1;
- for(i=0;i<razn; ++i)
- {
- b=konPosSl;
- s=str[konPosSl];
- for(; b!=d; --b)
- {
- str[b]=str[b-1];
- }
- str[d]=s;
- }
- }else
- {
- for(i=konPosSl, j=konPrSl; i>nachPosSl-1; --i, --j)
- {
- s=str[i];
- str[i]=str[j];
- str[j]=s;
- }
- razn=c1-c2;
- d=nachPosSl-1;
- for(i=0;i<razn; ++i)
- {
- b=nachPrSl;
- s=str[nachPrSl];
- for(; b!=d; ++b)
- {
- str[b]=str[b+1];
- }
- str[d]=s;
- }
- }
- for(i=0; str[i]; ++i)printf("%c", str[i]);
- return 0;
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д