GREEN_OR_DEAD
10-12-2009, 10:32
Да се напише програма , която въвежда стринг S1 и го разширява в стринг S2 , като всяка последователност буква..буква да бъде заменена с последователността от буква 1 до буква 2, ако това е възможно. Всички останали символи се прехвърлят такива , каквито са. Примерно ако S1 e gda..d4325o..s ,
s2 ще бъде: gdabcd4325opqrs . Тази задача съм я написал ето го кода:
#include <stdio.h>
#include <conio.h>
int main()
{
char s1[20];
char s2[200];
char p;
int i,n=0;
printf("vavedete s1=");
scanf("%s",&s1);
for(i=0; s1[i]!='\0'; i++)
if (s1[i+1]=='.'&&s1[i+2]=='.'&&s1[i+3]>s1[i])
{
for (p=s1[i]; p<=s1[i+3]; p++)
{
s2[n]=p; n++;
}
i+=3;
}
else {
s2[n]=s1[i]; n++;
};
s2[n]='\0';
printf("%s",s2);
getch();
return 0;
}
Проблема е , че сега трябва да напиша обратната на тази програма. Ако имаме последователно въведени символи да ги запишем с .. Примерно имаме за стринг S1: abcd654654mnoprs35 да отпечатва стринг s2: a..d654654m..s35 . Надявам се ме разбрахте какво е условиято на обратната задача. Ако някой може да ми помогне с някакви идеи , код - всичко ще е от полза. Благодаря.
s2 ще бъде: gdabcd4325opqrs . Тази задача съм я написал ето го кода:
#include <stdio.h>
#include <conio.h>
int main()
{
char s1[20];
char s2[200];
char p;
int i,n=0;
printf("vavedete s1=");
scanf("%s",&s1);
for(i=0; s1[i]!='\0'; i++)
if (s1[i+1]=='.'&&s1[i+2]=='.'&&s1[i+3]>s1[i])
{
for (p=s1[i]; p<=s1[i+3]; p++)
{
s2[n]=p; n++;
}
i+=3;
}
else {
s2[n]=s1[i]; n++;
};
s2[n]='\0';
printf("%s",s2);
getch();
return 0;
}
Проблема е , че сега трябва да напиша обратната на тази програма. Ако имаме последователно въведени символи да ги запишем с .. Примерно имаме за стринг S1: abcd654654mnoprs35 да отпечатва стринг s2: a..d654654m..s35 . Надявам се ме разбрахте какво е условиято на обратната задача. Ако някой може да ми помогне с някакви идеи , код - всичко ще е от полза. Благодаря.