Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Строки

Автор: org777 19.12.2008 23:34

Задача в картинке, первая сверху.
Вот то, что сделал я, но оно че-то не катит((( Помогите, а?

Program org;
var c,s1:string;
begin
writeln('Vvedite stroku: ');
readln©;
while(c<>'') do
begin
if pos('absd',c)<>0 then
begin s1:=s1+copy(c,1,pos('abcd',c)-1);
delete(C,1,pos('absd',c)+3); end
else begin s1:=s1+c;
delete(c,1,length©); end;
end;
writeln('s1= ',s1);
readln;
end.


P.S. От этой задачи зависит мой автомат на сессии. Если я ее не сдам - придется экзамен сдавать((( Эту задачу сдать мне надо уже завтра... Помогите пожалуйста


Эскизы прикрепленных изображений
Прикрепленное изображение

Автор: Unconnected 19.12.2008 23:59

Группы букв вида abcd - это значит именно abcd, или возможно wxyz?

Добавлено через 4 мин.
Если именно 'abcd', то можно попробовать так:

const s='abcd';
var a,n:integer;
s2:string;
s3:string[4];
x:char;
begin
s2:='';
writeln('Введите N');
readln(n);
for a:=1 to n do
begin
writeln('Введите символ №',a);
readln(x);
s2:=s2+x;
end;
writeln;
writeln(s2);
for a:=1 to n-4 do
begin
s3:=copy(s2,a,4);
if s3='abcd' then begin
delete(s2,a,4);
end;
end;
writeln(s2);
readln;
end.

Автор: volvo 20.12.2008 2:25

Цитата
Задача в картинке, первая сверху.
Задачка-то с подвохом... Вот, смотри: "def aabcdbcdef" - строка. Что получится, если убрать вхождения abcd?

Автор: org777 20.12.2008 2:27

Спасибо, но че-то не так...
Если я верно представляю суть - то надо просто убрать эти 4 буквы из вводимой строки... Тогда не так вроде должен выглядить код... но это если я правильно понял ее... Блин... тупая задача! ypriamii.gif

Добавлено через 1 мин.
volvo, ну если я правильно понял - должен получиться 0 или пробел, так?

Добавлено через 1 мин.
А не - "f f", да?

Автор: volvo 20.12.2008 2:41

Вот видишь, ты сам не представляешь, что должно получиться, и убирать ли только те символы, которые идут подряд: ABCD (но и тут будет подвох, именно на той строке, что я показал. Удалишь одно вхождение ABCD, появится еще одно. Его что, тоже удалять? В первоначальной строке его ж не было), или вообще все символы A, B, C и D... Как же ты хочешь, чтоб тебе помогли. Условие надо уточнить... Выбери для себя что-то одно, подскажем, как это сделать...

Автор: org777 20.12.2008 4:21

там написанно все группы букв вида abcd. Значит я так понимаю только тогда, когда они идут вместе подряд. Т.е. fabcdbcad = f....bcad. Вот это, я так полагаю))
volvo, напиши код пожалуйста, если можешь...

Автор: volvo 20.12.2008 5:58

Цитата
напиши код пожалуйста, если можешь...
Да я-то смогу... Только тогда зачем тебе дано N? Ну ладно, удалить из строки - так из строки...
Program org;
var
s: string;
p: integer;
begin
writeln('Vvedite stroku: ');
readln(s); { s := 'ab abcd aabcd bcdabcabcd'; }
repeat
p := pos('abcd', s);
delete(s, p, 4); { <--- Можно добавить условие if p > 0 then, можно и не добавлять }
until p = 0;
writeln(s);
readln;
end.


Update: Да, была небольшая опечатка... Поправил.

Автор: org777 20.12.2008 11:45

Как-то странно он удаляет эти буквы... из строки "ab abcd aabcd bcdabcabcd" оставляет "ab a bcdbcadc"
Но все-равно спасибо! Я буду сдавать эту версию, твою, т.к. считаю, что она должна быть верной)

Автор: Lapp 20.12.2008 12:52

Цитата(org777 @ 20.12.2008 7:45) *
Как-то странно он удаляет эти буквы... из строки "ab abcd aabcd bcdabcabcd" оставляет "ab a bcdbcadc"
Но все-равно спасибо! Я буду сдавать эту версию, твою, т.к. считаю, что она должна быть верной)
Я бы сказал, он еще страннее работает: из любой строки делает одну единственную букву: s smile.gif.

Но если исправить эту (как я полагаю) опечатку, то странны уже твои слова, org777. Потому что мне из строки:
ab abcd aabcd bcdabcabcd
- программа оставила вполне само собой разумеющееся:
ab  a bcdabc


А вообще, при в определении что правильно, а что нет, рекомендую все-таки больше принимать во внимание факты smile.gif.

Автор: org777 20.12.2008 19:19

Короче, действительно надо было удалять только abcd, когда они вместе, т.е. считать их за одно слово.
У меня приняли код volvo с одной оговоркой: надо было добавить if p>0, что я в общем и сделал еще дома)) И отнес уже рабочую задачку)) Зачет автоматом поставили, я теперь от программирования свободен до 2 семместра, т.е. до февраля! yahoo!.gif
Спасибо вам всем огромное!!