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

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

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

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





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

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


Буду очень благодарен, если вы хоть как-то поможете с написанием этой программы:
Зашифруйте фразу, заменив букву а на у, букву и на ю и букву е на букву я. После запроса расшифруйте фразу.
(принцип: в окне пользователя пользователь сам вводит любую фразу, далее заменяются соответствующие буквы и фраза выдается в зашифрованном виде. Далее программа спрашивает: "расшифровать фразу?", если вы отвечаете "да" то происходит обратная замена букв и вывод первоначальной фразы.) mega_chok.gif
заранее всем благодарен!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


просто человек
******

Группа: Пользователи
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

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


Проходишь по строке, анализируя каждый символ... если это а, и или е, заменяешь
как расшифровывать - непонятно.


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Помощник капитана
****

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

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


var
s: string;
i: integer;
begin
readln(s);
for i:=1 to length(s) do begin
case s[i] of
'à': s[i]:='ó';
'è': s[i]:='þ';
'å': s[i]:='ÿ';
end;
end;
writeln(s);
readln
end.

а на основе расшифровку попробуй сделать сам...


--------------------
Dum spiro spero!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Пионер
**

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

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





uses crt;

var
i : integer;
s,s1 : string;
c : char;

begin
clrscr;
writeln ('вводи');
readln (s);
s1 := s;
for i := 1 to length(s) do begin
if ord(s[i]) = 160 then
s[i] := chr(227);
if ord(s[i]) = 168 then
s[i] := chr(238);
if ord(s[i]) = 165 then
s[i] := chr(239);
end;
writeln(s);
writeln;
writeln('расшифровать? y/n');
readln©;
if c = 'y' then
writeln(s1);
readkey;
end.





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


Бывалый
***

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

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


Цитата(nikita182 @ 18.05.2007 5:24) *

вот и вся расшифровка)

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


Гость






запоминать ничего не надо, символы те же, только наоборот...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Пионер
**

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

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


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


Гость






Цитата
символы те же, только наоборот...
Да?

"Это я, привет!" - зашифруй и дешифруй... Я хочу видеть, что ты получишь в результате...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Пионер
**

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

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


согласен косяк, это я с просонья)
исправляюсь:




uses crt;

var
i,j,x : integer;
s,s1,s2 : string;
c : char;

begin
clrscr;
writeln ('вводи');
readln (s);
s1 := '';
for i := 1 to length(s) do begin
if ord(s[i]) = 160 then begin
s[i] := chr(227);
str (i, s2);
s1 := s1 + s2;
end;
if ord(s[i]) = 168 then begin
s[i] := chr(238);
str (i, s2);
s1 := s1 + s2;
end;
if ord(s[i]) = 165 then begin
s[i] := chr(239);
str (i, s2);
s1 := s1 + s2;
end;
end;
writeln(s);
writeln;
writeln('расшифровать? y/n');
readln©;
if c = 'y' then
for i := 1 to length(s1) do begin
val (s1[i], j, x);
if ord(s[j]) = 227 then
s[j] := chr(160);
if ord(s[j]) = 238 then
s[j] := chr(168);
if ord(s[j]) = 239 then
s[j] := chr(165);
end;

writeln(s);


readkey;
end.





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


Профи
****

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

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


Цитата
согласен косяк, это я с просонья)
исправляюсь:

А у меня она не шифрует вообще.. Может коды символов разные?

Раз уж сделала, то выложу и свой вариант:
uses wincrt;
var
ch: array[1..50] of integer; {здесь храним номера измененных символов}
s,c: string;
i,j: integer;
begin
j:=1;
writeln ('введите строку');
readln(s);
for i:=1 to length(s) do
begin
case s[i] of
'и': begin
s[i]:='ю';
ch[j]:=i;
inc(j);
end;
'е': begin
s[i]:='я';
ch[j]:=i;
inc(j);
end;
'а': begin
s[i]:='y';
ch[j]:=i;
inc(j);
end;
end;
end;
writeln('Зашифровано: ',s,'');
writeln;
writeln('расшифровать? y/n');
readln©;
if c='y' then
begin
for i:=1 to j do
begin
case s[ch[i]] of {расшифровываем только символы с сохраненными номерами}
'у': s[ch[i]]:='а';
'я': s[ch[i]]:='е';
'ю': s[ch[i]]:='и';
end;
end;
writeln('Расшифровано: ',s,'');
end;
readln
end.


Сообщение отредактировано: Айра -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Пионер
**

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

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


ascii код точно такой, может с кодировкой чего..
я долго мучился чтоб паскаль русский понимал)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12


Профи
****

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

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


Цитата
ascii код точно такой, может с кодировкой чего..

Сейчас проверила (одна программка умеет находить коды), у меня:
а = 224
е = 229
и = 232
у = 243
ю = 254
я = 255
Воть так.
Цитата
я долго мучился чтоб паскаль русский понимал)

А у меня с этим проблем не было, правда есть некоторые другие)))

Сообщение отредактировано: Айра -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #13


Пионер
**

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

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


бляха-муха...
тогда программа, которая возвращает код символа:



uses crt;

var
simvol : char;
flag : boolean;
i : integer;

procedure vozvrat;

begin
repeat
clrscr;
writeln('vvodi...esc - vixod!');
simvol:=readkey;
clrscr;
writeln('vvel:',simvol,' kod:',ord(simvol));
readkey;
until ord(simvol) = 27;

readkey;
end;

begin
vozvrat;
end.





сам подставит))



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


Гость






Оля,
    for j:=1 to 6 do begin
- это зачем? Ты для этого разве запоминала J, чтобы потом вводить вручную, сколько символов заменять? Лучше - так:
    for i:=1 to j do begin
case s[ch[i]] of ...


Сообщение отредактировано: volvo -
 К началу страницы 
+ Ответить 
сообщение
Сообщение #15





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

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


УРА!!!!!!!!!!!!!!!!!!!!!!!!!!! good.gif
Все работает! Спасибо всем вам большое за помощь!!!!
в особенности Айре! give_rose.gif
Даже не предполагал, что столько людей откликнется мне на помощь!
Еще раз спасибо всем!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #16


Профи
****

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

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


Цитата
бляха-муха...

не хорошо.. спокойно smile.gif
Цитата
тогда программа, которая возвращает код символа:

У меня все равно мои цифры получаются. Просто у нас сама кодировка может быть разная, забей на это))
Цитата
это зачем? Ты для этого разве запоминала J, чтобы потом вводить вручную, сколько символов заменять?

Ой.. честно, не догадалась, что можно сделать лучше(( Сейчас исправлю, и буду учиться дальше smile.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #17





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

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


А у меня несколько вопросов по поводу программы.
Мне не совсем понятно что значат следующие фразы в программе:
ch
length
case
inc
unsure.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #18


Профи
****

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

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


Цитата
Мне не совсем понятно что значат следующие фразы в программе:

ch - в своей программе я так обозвала)) массив, содержащий номера изменяемых символов.
length - строковая функция, которая вычисляет длину (количество символов) в строке. Т.е. length(s) вычислит, сколько символов в строке s.
case - это оператор выбора. Он позволяет выбрать из нескольких вариантов и для каждого можно прописать соответствующее действие. Например, в этом фрагменте:
case s[ch[i]] of  {сначала вычисляется значение s[ch[i]], а потом смотрится}
'у': s[ch[i]]:='а'; {если s[ch[i]] равно символу 'у', то выполняется одно действие}
'я': s[ch[i]]:='е'; {если s[ch[i]] равно 'я', то - другое, и т.д.}
'ю': s[ch[i]]:='и';
end;


inc - процедура, увеличивающая значение числа в скобках inc(j), по умолчанию на 1, а если написать так: inc(j,5), то, соответственно, на пять.
Если еще что непонятно, спрашивай, объясним smile.gif

Сообщение отредактировано: Айра -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #19


Пионер
**

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

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


Цитата(Айра @ 18.05.2007 13:25) *

А у меня с этим проблем не было, правда есть некоторые другие)))


wincrt)) это не проблема..
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 





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