Помощь - Поиск - Пользователи - Календарь
Полная версия: задача на замену
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Новичок
Здравствуйте!
Помогите решить задачу на замену.Вроде бы сделал все правильно, но замены по условию не происходит

Заменить в ведённом слове «римский» слово «рим» на «мир»
Выдаёт ошибку при компиляции программы и три буквы не заменяет

program f351;							
var x:string[10];
i:integer;
begin
x:='римский';
for i:=1 to length(x)-2 do begin
if copy(x,1,3)='рим' then copy(x,1,3)='мир';
end;
for i:=1 to length(x) do
write (x[i]);
end.


М
Тэги! Lapp

Lapp
Цитата(Новичок @ 2.04.2010 8:34) *
Выдаёт ошибку при компиляции программы и три буквы не заменяет
Гм. А как ьы ты хотел, чтоб оно работало?.. blink.gif Ты посмотрел описание процедуры copy? И что вообще ты подразумевал под
copy(x,1,3)='мир'
- это присваивание или что?.. blink.gif
Да и баланс begin/end у тебя не соблюден.. Ладно, вот, короче, смотри.
var
x: string;
p:integer;
begin
x:='Папа римский пошел погулять';
p:=Pos('римский',x);
if p>0 then begin
Delete(x,p,3);
Insert('мир',x,p)
end;
WriteLn (x);
end.
Новичок
Спасибо, я совсем забыл про тот способ который вы указали в решении.
Просто когда проводишь замену одного символа или подсячёт мой вариант решения задачи проходит.
Ещё раз большое спасибо.
Lapp
Цитата(Новичок @ 2.04.2010 12:03) *
Просто когда проводишь замену одного символа или подсячёт мой вариант решения задачи проходит.
Ещё раз большое спасибо.
Пожалуйста! smile.gif

Новичок, я не вполне понял, что ты имеешь в виду. Что именно проходит? Присваивание значения функции? Я совсем не понимаю тебя. Может, сделаешь вариант с заменой одного символа?
Новичок
Я имел ввиду,вот если необходимо заменить допустим в слове "барабан" букву "б" на "а" то пользовался
if copy(x,1,1)='а' then copy(x,1,1)='б';
и всё прекрасно получалось, но а если приходилось осуществить замену нескольких букв то этот способ уже не проходил.
Lapp
Цитата(Новичок @ 3.04.2010 6:55) *
Я имел ввиду,вот если необходимо заменить допустим в слове "барабан" букву "б" на "а" то пользовался
if copy(x,1,1)='а' then copy(x,1,1)='б';
и всё прекрасно получалось, но а если приходилось осуществить замену нескольких букв то этот способ уже не проходил.
Новичок, ты сильно заблуждаешься. Попробуй скомпилировать эту строку. Так нельзя делать. По крайней мере, в Паскале.
Новичок
Спасибо за совет, буду иметь ввиду
Archon
Если замены такие простые, почему бы не сделать так:
var
x: string[10];
begin
x := 'римский';
x[1] := 'м';
x[3] := 'р';
Write(x);
end.
и соответственно
var
x: string[10];
begin
x := 'барабан';
x[1] := 'а';
Write(x);
end.
Lapp
Цитата(Archon @ 7.04.2010 18:25) *
Если замены такие простые, почему бы не сделать так:

Тогда уж так:
const
x: string= 'мирский';
begin
Write(x)
end.

или так:
begin
Write('мирский')
end.

Эти программы будут вести себя точно так же smile.gif.

На самом же деле, я полагаю, в условии неточность. Вводится (причем, с клавы или из файла) не одно слово "римский", а текст, содержащий его (или не содержащий).
Новичок
Действительно Archon
способ предложенный тобой проще и рациональнее ( простая замена символов)Как я не догадался
Спасибо
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.