Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.04.2011, 22:44   #1
artem611
Пользователь
 
Регистрация: 21.09.2010
Сообщений: 40
По умолчанию Проблема в типах

Вот задание
Шифр замены (код Цезаря)
Занумеровать алфавит исходного сообщения. Пусть m -длина алфавита сообщения; n,k - целые числа и НОД(n,m)=1; A,B - коды букв исходного сообщения и шифра соответственно. Тогда B=(A*n+k) mod m и A=(B-k)*n^(-1) mod m .
Реализовать кодирование/декодирование.
Вот код
Код:
var ALPH_ENG,message,code,decode:string;
   n,k,i,buff:integer;

function nod(x,y:integer):integer;
begin
if (y=0) then nod:=x else
 nod:=nod(y,(x mod y));
end;
begin
ALPH_ENG:='abcdefghijklmnopqrstuvwxyz';
write('Enter your message:');
readln(message);
write('Enter k:');
readln(k);
repeat
  write('Enter n:');
  readln(n);
  writeln('nod=',nod(n,26)) ;
until( nod(n,26)=1);
for i:=1 to length(message) do code:=code+ALPH_ENG[((Ord(message[i])-96)*n +k) mod 26];
writeln('code=',code);

for i:=1 to length(code) do
  begin
  buff:=Ord(code[i])-96-k;
  if (buff < 0) then buff:=buff+26;
  while (buff mod n >0) do buff:= 26+buff;
  buff:=buff/n;
  decode:=decode+ALPH_ENG[(buff) mod 26];
end;

writeln('decode=',decode); 

readln;
end.
Проблема в том,что buff - это integer => поделить на n мы не можем, тк компилятор не исключает возможность появления остатка. Но я то знаю, что остатка не будет, вот только как объяснить это машине ?
artem611 вне форума Ответить с цитированием
Старый 11.04.2011, 03:35   #2
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

> как объяснить это машине ?

Код:
buff:=buff div n;
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 11.04.2011, 10:18   #3
artem611
Пользователь
 
Регистрация: 21.09.2010
Сообщений: 40
По умолчанию

Цитата:
Сообщение от veniside Посмотреть сообщение
> как объяснить это машине ?

Код:
buff:=buff div n;
спсаибо, помогло
artem611 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
C# ошибка в типах Gohan Помощь студентам 1 20.02.2011 14:54
Не пойму в чём проблема. Кажется дело в типах.(С++) Зелёный Помощь студентам 2 26.11.2010 09:49
Запуталась в типах и переменных. Помогите пожалуйста! Kati Помощь студентам 2 20.06.2009 00:40
Проблема с рамами/Проблема с ЖД DRAGGER Компьютерное железо 6 04.01.2009 23:37