PDA

View Full Version : Програма на C



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 . Надявам се ме разбрахте какво е условиято на обратната задача. Ако някой може да ми помогне с някакви идеи , код - всичко ще е от полза. Благодаря.

DevilInDisguise
10-12-2009, 13:57
съмнявам се някой да се трогне да пише безплатно

GREEN_OR_DEAD
10-12-2009, 15:21
Аз съм помолил за съвет, идея , малко код - всичко ще е от полза. Не съм молил да ми пишат програмата на готово, написал съм програма , ако някой има идея как ще стане обратния вариант да казва. От цикъла на доло :)

Fena
10-12-2009, 15:31
Хващаш първия елемент от масива. Почваш да правиш проверки с всеки СЛЕДВАЩ елемент дали наистина е следващия(a->b, 1->2), и така докато не стигнеш \0 или се прекъсне серията. Мисля че ще може да се реализира с няколко вложени цикъла for (2 броя). Незнам дали ми е верен начина, не съм го мислил много. Довечера ако имам време може да го разчовъркам.

Fena
10-12-2009, 15:33
И си форматирай кода, в този вид нищо не се разбира

GREEN_OR_DEAD
10-12-2009, 19:09
Проблема е как да се запише "Ако има няколко последователни символа"
как ще се запише с if . Преди това слагам един фор
for(i=0; s1[i]!='\0'; i++) за да нямаме спънка с "/0" ако някой има идея как да направим тоя if след това ще направя пърия и последния елемент от тази последователнот да се разделят с .. , не мисля че ще е трудно , но if-a ме спъва за сега :o :o :o :o