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

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

Форум «Всё о Паскале» _ Задачи _ удаление слова, введенного с клавиатуры

Автор: Child of Bodom 26.12.2006 17:43

Спасибо все работает. Мне чтоб цитаты делать надо было включить плагины или java . А почему меня ваш форум не запоминает, когда я на него захожу, каждый раз приходится авторится. Вот...Можете еще с одной задачкой помочь-последней на ближайшие пол года:дан текст. Удалить в нем слово, введеное с клавиатуры. Вот что то у меня тут есть но прога ничего не удаляет:

program rgr3_4;
uses crt;
var f,g: text;
procedure vivod(var f: text);
var x: string;
begin
reset(f);
while not eof(f) do
begin
readln(f,x);
writeln(x);
end;
close(f);
end;
procedure del;
var x,n:string;
p,p1:integer;
Begin
reset (f);
rewrite(g);
writeln;
writeln ('Введите слово без пробелов ');
readln (n);
while not eof(f) do
begin
readln (f,x);
p1:=pos(' ',x);
p:=pos(n,x);
if (p<>0) and (p-p1=1) then
Begin
delete(x,p,length(n)+1);
writeln (x);
writeln (g,x);
end
else
begin
writeln (x);
writeln (g,x);
end;
end;
close (f);
close (G);
end;
Begin
clrscr;
assign (f,'pismo.txt');
assign (g,'vremen4.txt');
vivod(f);
del;
readln;
erase (g);
end.


Надеюсь на вашу помощь!!
Тут тот текстик



Прикрепленные файлы
Прикрепленный файл  Pismo.txt ( 240 байт ) Кол-во скачиваний: 252

Автор: мисс_граффити 26.12.2006 22:20

readln (f,x);
p1:=pos(' ',x);
p:=pos(n,x);
if (p<>0) and (p-p1=1) then...

Строка:
мама мыла раму.
слово, которое надо удалить: раму
p1=5
p=11 (если не ошиблась со счетом)
чему равно p-p1?

Автор: Child of Bodom 26.12.2006 23:49

Мда. Точно бред получается!!!А как тогда зделать???Мне только вот это осталось сделать тока я не знаю как!!! Помогите плиииз

Автор: мисс_граффити 27.12.2006 0:04

может,

if (p<>0) and (x[p-1]=' ') then 

?
а еще рассмотреть случай, что перед словом нет пробела - оно же может быть первым в строке.
и, кстати, логично было бы проверять, что стоит ПОСЛЕ слова.
А то будет:
надо удалить "нос".
строка: нос носили и выносили носатики
получится: или и выносили атики.

Автор: Child of Bodom 27.12.2006 0:07

Так вот если сделать так-ну проверять на наличие пробела после искомого слова, то там надо проверять и точку и воскл знак, и вопроситель, и запятую. Это столько переменных надо вводить что ли или как???

Автор: мисс_граффити 27.12.2006 0:22

множество....
а потом что-то типа

if s[p+length(n)+1] in razdeliteli then

Автор: volvo 27.12.2006 0:25

Юля, а вылететь за пределы строки при такой проверке не боишься? Я бы боялся... Кстати, я где-то приводил трехэтажную проверку одним If-ом на то, что слово первое, или в середине строки (и обрамлено соотв. символами), или в конце строки... Сейчас найду...

Вот оно: http://forum.pascal.net.ru/index.php?s=&showtopic=14764&view=findpost&p=85310
Только заменить проверку на пробел проверкой на включение во множество...

Автор: мисс_граффити 27.12.2006 0:32

я просто отвечала на узко поставленный вопрос - что делать с кучей возможных символов...
поэтому вылететь за границы не боялась...
хотя, согласна, это было не совсем корректным поступком - раз уж про первое в строке уточнила, надо было и здесь рассмотреть вариант...

Автор: Гость 27.12.2006 0:41

а можете вот это все что вы мне сказали запихнуть в код проги???А то что то столько всего а что куда девать теперь не знаю!!!

Автор: Child of Bodom 27.12.2006 0:55

Скажите пожалуйста сможете это сделать???
p.s.: меня ваш форум не запоминает-почему???

Автор: Гость 27.12.2006 1:48

Помогите мне пожалуйста. Ну очень срочно нужно буду очень благодарен. Хотя я итак вам благодарен, буду еще больше