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