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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.04.2008, 15:13   #1
Troll666
 
Регистрация: 22.04.2008
Сообщений: 3
По умолчанию использование "mod"

Здравствуйте

Помогите мне пожалуйста разобраться:

Мне необходимо написать программу для реализации алгоритма RSA. У меня появилась сложность пока в одном моменте - неполучается посчитать результат целочисленного деления. Операция происходит по нажатию кнопки:

Код:
procedure TForm1.Button5Click(Sender: TObject);
var
k,j,n,i: integer;
s,v: string;
begin
k:=Memo1.Lines.Count-1;
for j:=0 to k do
    begin
    n:=0;
    s:='';
    s:=memo1.Lines[j];
    n:=length(s);
    For i:=0 to n do
           begin
           if s<>'' then
           case s[i] of
                       'а': insert(  FloatToStr(exp(StrToInt(Edit5.Text)*ln(1))  ),v,i);

                       'б': insert(  FloatToStr(exp(StrToInt(Edit5.Text)*ln(2))  ),v,i);
                       'в': insert(  FloatToStr(exp(StrToInt(Edit5.Text)*ln(3))  ),v,i);

                       'г': insert(  FloatToStr(exp(StrToInt(Edit5.Text)*ln(4))  ),v,i);

                       ...........//весь русский алфавит
                       'я': insert(  FloatToStr(exp(StrToInt(Edit5.Text)*ln(33))  ),v,i);

                       end;

    End;
    memo2.Lines.Add(v);
    v:='';

end;
end;
однако мне необходимо с такими строками, как:
Код:
insert(  FloatToStr(exp(StrToInt(Edit5.Text)*ln(1))  ),v,i);
выполнить ещё одно действие - найти результат целочисленного деления уже составленной функции:

Код:
insert(  FloatToStr(        exp(StrToInt(Edit5.Text)*ln(1))  mod 5          ),v,i);
но при компиляции пишет ошибки:

[Error] Unit1.pas(136): Operator not applicable to this operand type
[Fatal Error] Project1.dpr(6): Could not compile used unit 'Unit1.pas'

строка ошибки - строка с mod

Как мне выполнить такое действие?
Спасибо
Troll666 вне форума Ответить с цитированием
Старый 22.04.2008, 15:20   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
insert(  FloatToStr(       trunc(exp(StrToInt(Edit5.Text)*ln(1)))  mod 5          ),v,i);
Хотя чет помоему алгоритм как то не так сделан...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 22.04.2008, 22:22   #3
Troll666
 
Регистрация: 22.04.2008
Сообщений: 3
По умолчанию

Спасибо, помогло!

Если не сложно, помогите разобраться по этой же теме.
У меня 2 компонента Memo и кнопка. В первом Memo я пишу текст, который надо зашифровать, потом нажимаю кнопку и зашифрованый вариант этого текста появляется во втором Memo - это так должно быть в теории)
Но у меня во втором Memo результат удачной шифровки появляется только при вводе одного символа в первый Memo, а при вводе больше одного символа - результат подаётся в виде чисел неясной последовательности.
Вот код нажатия кнопки:

Код:
procedure TForm1.Button5Click(Sender: TObject);
var
k,j,n,i: integer;
s,v: string;
begin
Memo2.Lines.Clear;
k:=Memo1.Lines.Count-1;
for j:=0 to k do
    begin
    n:=0;
    s:='';
    s:=memo1.Lines[j];
    n:=length(s);
    For i:=0 to n do
           begin
           if s<>'' then
           case s[i] of
                       'а': insert(FloatToStr(trunc(exp(StrToInt(Edit5.Text)*ln(1))) mod StrToInt(Edit6.Text)),v,i);
                       'б': insert(FloatToStr(trunc(exp(StrToInt(Edit5.Text)*ln(2))) mod StrToInt(Edit6.Text)),v,i);
                       'в': insert(FloatToStr(trunc(exp(StrToInt(Edit5.Text)*ln(3))) mod StrToInt(Edit6.Text)),v,i);
                       //весь русский алфавит
                       'я': insert(FloatToStr(trunc(exp(StrToInt(Edit5.Text)*ln(33))) mod StrToInt(Edit6.Text)),v,i);
                       end;

    End;
       if v = '1' then
       begin
       memo2.Lines.Add('а');
       v:='';
       end
       else if v = '2' then
       begin
       memo2.Lines.Add('б');
       v:='';
       end
       else if v = '3' then
       begin
       memo2.Lines.Add('в');
       v:='';
       end
       // весь русский алфавит
       else if v = '33' then
       begin
       memo2.Lines.Add('я');
       v:='';
       end
       else
       begin
       memo2.Lines.Add(v);
       v:='';
       end;
end;
end;
Как я могу сделать возможным шифрование текста из больше чем одного символа?

Спасибо
Troll666 вне форума Ответить с цитированием
Старый 22.04.2008, 23:24   #4
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

for i:=1 to n

нумерация в строке (string) начинается с единицы
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 22.04.2008, 23:42   #5
Troll666
 
Регистрация: 22.04.2008
Сообщений: 3
По умолчанию

Попробовал, но не помогло.
Тут как получается: я ввожу символ, он переводится в порядковый номер алфавита, с ним происходят вычисления и потом результат опять переводится в уже новый символ. Но так всё красиво получается только при вводе одного символа. При вводе уже двух - выводятся какие-то цифры(
Troll666 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка при использовании OlePropertyGet("Documents").OleProcedure("Add") в C++ Builder AleksP C++ Builder 7 11.04.2009 13:06
если пользователь наберет какой-то другой символ не "y" или "n" и нажмет enter, программа проигнорирует skobets Общие вопросы C/C++ 2 03.06.2008 06:51
Excel файл открывается не "до конца" (странички "не показываются" только серое поле) Dorvir Microsoft Office Excel 2 28.03.2008 10:03
Создаю диаграмму "Bar". Подскажите как убрать растояние между "столбами" MAcK Компоненты Delphi 11 24.10.2007 10:49
На чем пишутся стратегии типа "Казаков" и "Эпохи империи" Tayfun Свободное общение 3 26.06.2007 20:27