Консультация № 159820
07.02.2009, 00:35
0.00 руб.
0 7 1
Здравствуйте уважаемые эксперты!
Помогите пожалуйста решить задачу на символьную обработку.
Задача. В каждом парном слове предложения поменять местами буквы
"О" и "К" , "К" и "Л" соответственно...

Помогите пожалуйста чем сможете.. заранее спасибо..!!

Обсуждение

давно
Старший Модератор
31795
6196
07.02.2009, 00:56
общий
Цитата: 269451
В каждом парном слове
, т.е. в каждом четном слове предложения нужно найти букву "О" и заменить её на букву "К", а потом эту букву заменить на на букву "Л", или "О"-"К", а "К"-"Л".
Ещё вопрос как разделяются сами слова (пробелом или любым стандартным разделителем).
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

Неизвестный
07.02.2009, 01:04
общий
Нет.. Вот сначала нужно найти четное слово.... потом найти в этом слове (если есть) буквы "О" и "А".. и если есть то заменить букву "О" на "К" а "А" на "Л"
З.Ы. Я перепутал пары букв... но это не важно... главное это алгоритм.. который будет работать для любых пар букв...=)


2) Слова разделяются пробелом.


Значит так еще раз:



находим четное слово в котором ищем букву "О" которую меняем на "К" и букву ,"А" которую заменяем на "Л"


Напомню я случайно перепутал пары букв в условии но это не важно..))
давно
Старший Модератор
31795
6196
07.02.2009, 01:14
общий
Sasha Sugak:
Понятно:
Вам с помошью циклов или с рекурсией?
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

Неизвестный
07.02.2009, 01:23
общий
Если можна с помощью циклов....
давно
Старший Модератор
31795
6196
07.02.2009, 02:31
общий
это ответ
Здравствуйте, Sasha Sugak!

Программа в приложении.
Вопросы задавайте в мини-форум.
Удачи!

Приложение:
var
a,b,c:string;{рабочие строки}
d:set of char;{множество разлелителей}
e:integer;{просто так индекс}
begin
{вводим строку}
repeat
write('Enter String:');
readln(a);
until (length(a)>0)and(length(a)<250);
a:=a+' ';
{ставим множество разделителей}
d:=['.',',',':','-','+','*','/'];
{заменяем разделители}
for e:=1 to length(a) do
if a[e] in d then a[e]:=' ';
{удаляем двойные пробелы}
while pos(' ',a)>0 do
delete(a,pos(' ',a),1);
{начинаем работу}
c:='';
e:=0;
while length(a)>0 do
begin
{выделяем слово}
b:=copy(a,1,pos(' ',a));
delete(a,1,pos(' ',a));
{считаем слово}
inc(e);
if not odd(e)then
begin
{заменяем букву прописную и строчную}
while pos('A',b)>0 do
b[pos('A',b)]:=chr(ord(b[pos('A',b)])+11);
while pos('a',b)>0 do
b[pos('a',b)]:=chr(ord(b[pos('a',b)])+11);
while pos('O',b)>0 do
b[pos('O',b)]:=chr(ord(b[pos('O',b)])-4);
while pos('o',b)>0 do
b[pos('o',b)]:=chr(ord(b[pos('o',b)])-4);
end;
{формируем результат}
c:=c+b;
end;
write('Result string:',c);
readln;
end.
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

давно
Старший Модератор
31795
6196
07.02.2009, 02:34
общий
Сразу скажу: для английских будет работать, для русских букв Вам нужно будет подобрать числа 11 и 4.
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

Неизвестный
07.02.2009, 13:56
общий
Спасибо большое за помощь!!!!!!!!!!!!!!!!!!!!
Форма ответа