Показать сообщение отдельно
  #2  
Старый 18.12.2010, 21:33
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

1)
Код:
delete(s, pos('.',s), length(s));
нехорошо, потому что ты указываешь, откуда удалить и СКОЛЬКО удалять. За это могут снять баллы наверно.

2) если на K букв РАНЕЕ, то логично, что надо вычитать, а не складывать:
Код:
s[i]:=chr(ord(s[i])-min);

3) сравнивать символы можно и без ord():
Код:
if s[i]>'z' then

4) раз мы вычитаем, то надо так:
Код:
if s[i] in ['a'..'z']then
begin
 s[i]:=chr(ord(s[i])-k);
 if s[i]<'a' then
 s[i]:=s[i]+26; // 26 букв в латинском алфавите
end 
else if s[i] in ['A'..'Z']then
begin
 s[i]:=chr(ord(s[i])-k);
 if s[i]<'A' then
 s[i]:=s[i]+26; // 26 букв в латинском алфавите
end;
или так:
Код:
if s[i] in ['A'..'z'] then
begin
 if chr(ord(upcase(s[i]))-k)<'A' then
   s[i]:=s[i]+26;
 s[i]:=s[i]-k;
end;
__________________
jmp $ ; Happy End!
The Cake Is A Lie.
Ответить с цитированием