IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> задача на замену
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 21
Пол: Мужской
Реальное имя: Евгений

Репутация: -  1  +


Здравствуйте!
Помогите решить задачу на замену.Вроде бы сделал все правильно, но замены по условию не происходит

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

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

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Цитата(Новичок @ 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.


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Новичок
*

Группа: Пользователи
Сообщений: 21
Пол: Мужской
Реальное имя: Евгений

Репутация: -  1  +


Спасибо, я совсем забыл про тот способ который вы указали в решении.
Просто когда проводишь замену одного символа или подсячёт мой вариант решения задачи проходит.
Ещё раз большое спасибо.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Цитата(Новичок @ 2.04.2010 12:03) *
Просто когда проводишь замену одного символа или подсячёт мой вариант решения задачи проходит.
Ещё раз большое спасибо.
Пожалуйста! smile.gif

Новичок, я не вполне понял, что ты имеешь в виду. Что именно проходит? Присваивание значения функции? Я совсем не понимаю тебя. Может, сделаешь вариант с заменой одного символа?


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Новичок
*

Группа: Пользователи
Сообщений: 21
Пол: Мужской
Реальное имя: Евгений

Репутация: -  1  +


Я имел ввиду,вот если необходимо заменить допустим в слове "барабан" букву "б" на "а" то пользовался
if copy(x,1,1)='а' then copy(x,1,1)='б';
и всё прекрасно получалось, но а если приходилось осуществить замену нескольких букв то этот способ уже не проходил.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Цитата(Новичок @ 3.04.2010 6:55) *
Я имел ввиду,вот если необходимо заменить допустим в слове "барабан" букву "б" на "а" то пользовался
if copy(x,1,1)='а' then copy(x,1,1)='б';
и всё прекрасно получалось, но а если приходилось осуществить замену нескольких букв то этот способ уже не проходил.
Новичок, ты сильно заблуждаешься. Попробуй скомпилировать эту строку. Так нельзя делать. По крайней мере, в Паскале.


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Новичок
*

Группа: Пользователи
Сообщений: 21
Пол: Мужской
Реальное имя: Евгений

Репутация: -  1  +


Спасибо за совет, буду иметь ввиду
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Профи
****

Группа: Пользователи
Сообщений: 618
Пол: Мужской

Репутация: -  24  +


Если замены такие простые, почему бы не сделать так:
var
x: string[10];
begin
x := 'римский';
x[1] := 'м';
x[3] := 'р';
Write(x);
end.
и соответственно
var
x: string[10];
begin
x := 'барабан';
x[1] := 'а';
Write(x);
end.


--------------------
Close the World...txeN eht nepO
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Цитата(Archon @ 7.04.2010 18:25) *
Если замены такие простые, почему бы не сделать так:

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

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

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

На самом же деле, я полагаю, в условии неточность. Вводится (причем, с клавы или из файла) не одно слово "римский", а текст, содержащий его (или не содержащий).


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Новичок
*

Группа: Пользователи
Сообщений: 21
Пол: Мужской
Реальное имя: Евгений

Репутация: -  1  +


Действительно Archon
способ предложенный тобой проще и рациональнее ( простая замена символов)Как я не догадался
Спасибо
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 26.04.2024 7:48
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name