![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 10.10.2010
Сообщений: 7
|
![]()
Написала программу, но она почему-то не пашет =( помогите пожалуйста
Код:
___________ Код нужно оформлять по правилам: тегом [CODE]..[/СODE] (это кнопочка с решёточкой #) Не забывайте об этом! Модератор. Последний раз редактировалось Serge_Bliznykov; 29.03.2011 в 10:40. |
![]() |
![]() |
![]() |
#2 |
Форумчанин
Регистрация: 13.10.2010
Сообщений: 109
|
![]()
А каково задание - то?
Учусь учиться.
|
![]() |
![]() |
![]() |
#3 |
Регистрация: 10.10.2010
Сообщений: 7
|
![]()
Задание: зашифровать по методу Цезаря сообщение. прим: абвгд + ключ(допустим 3) => гдеёж
|
![]() |
![]() |
![]() |
#4 |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,543
|
![]()
то что делается у вас.
c:=Inttostr(Ord(S[I])); превращаем символ 'a' в строку '31' d:=c+inttostr(r); к строке '31' добавляем (дописываем) еще одну строку (пусть это будет '33'(полученное из символа 'c') в итоге вот такая строка '3133' Сложение строк это не сложение чисел а склеивание '31' + '2' = '312' e:=chr(strtoint(d)); теперь для '3133' пытаемся найти символ что очень затруднительно для ASCII. В ТО время как НАДО было превратить 'a' в число 1 'c' в 3 сложить эти числа 1 + 3 получить 4 и превратить в 'd' 'a' ord('a')=31 ord('a') -30 =1 для 'c' аналогично 3 теперь 1 + 3 = 4 chr(4 +30 ) ='d' т.е. у нас такая вот фрифметика (31-30) + (33-30) + 30 = 34 но можно и чуть короче (31) + (33- 30) = 34 Теперь о выводе результата. edit2.Text:=e; каждый вновь "полученный " символ стирает все введенное до этого в ответе надо накапливать символы. edit1.Text:=edit1.Text +e; P.S. А откуда возмуться значения для s и r если мы еще только создаем формую procedure TForm1.FormCreate(Sender: TObject); begin edit1.Text:=s; edit3.Text:=inttostr(r); end;
программа — запись алгоритма на языке понятном транслятору
Последний раз редактировалось evg_m; 29.03.2011 в 00:06. |
![]() |
![]() |
![]() |
#5 | |
Форумчанин
Регистрация: 26.01.2009
Сообщений: 125
|
![]() Цитата:
Код:
upd - ох, наврал про смещение, оно нигде не указывается. Ну тогда на тот же TForm1.Button1Click сначала прописать edit1.Text:=s; r:=StrToInt(r); потому как читаться должно по нажатии кнопки а не по создании формы. О выводе результата поддерживаю ![]() Последний раз редактировалось BoozZzilla; 29.03.2011 в 09:49. |
|
![]() |
![]() |
![]() |
#6 | |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,543
|
![]() Цитата:
Мои объяснения и пляски для случая задания смещения буквой (у меня это была 'c' соответствующее смещению 3 ord('c') =33 =30 + 3). (31) + (33- 30) = 34 (31) + 3 =34 А что собираетесь делать при шифрование последних букв алфавита(x y z)?
программа — запись алгоритма на языке понятном транслятору
Последний раз редактировалось evg_m; 29.03.2011 в 10:36. |
|
![]() |
![]() |
![]() |
#7 |
Форумчанин
Регистрация: 26.01.2009
Сообщений: 125
|
![]()
при смещении буквой задаём сначала r:=ord(S[0])-ord(edtit3.text[0]); (смещение первой буквы до буквы в edit) и дальше аналогично без этих лишних изысков
Насчёт последних букв надо спросить у автора насолько строг преподаватель. Возможно это спустится с рук, иначе я как начинающий сделал бы простым if xx>d>zz(не знаю я какой последний код у этих букв) then d:=d-26; я также не вижу решения этой проблемы в вашем примере ![]() Последний раз редактировалось BoozZzilla; 29.03.2011 в 10:57. |
![]() |
![]() |
![]() |
#8 |
personality
Старожил
Регистрация: 28.04.2009
Сообщений: 2,899
|
![]()
Извините, возможно не довъехал в необходимые конвертации символов в числа, но хочу уточнить, что смещение в 33 будет давать косяки, надо делать смещение 32, потому как в аски(и в анси) символ ё не лежит в остальном алфавите. Для аски ещё плох тот факт , что алфавит строчных букв разрывается, не по порядку идут номера (от $A0 до $AF идут а-п, и от $E0 до $EF идут р-я), заглавные буквы идут нормально
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
шифр Цезаря | Defa4ka | Помощь студентам | 5 | 23.10.2011 13:48 |
Шифр цезаря (не работает) | Айдар | Помощь студентам | 3 | 21.06.2010 11:15 |
Шифр Цезаря | Goracio | Помощь студентам | 1 | 19.04.2010 14:53 |
Шифр Цезаря | Jasper92 | Помощь студентам | 3 | 02.12.2009 18:47 |