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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.03.2013, 15:44   #11
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от mefisto85
да я читал только как 'то реализовать хотя бы скажите как я сам делать буду
согласен с s-andriano.

Добавлю, что алгоритм очень-очень простой. Да и расписан в файле очень подробно.
Разберите пример. И всё поймете.
Никаких приниципиальных сложностей в алгоритме я не вижу!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 24.03.2013, 16:56   #12
mefisto85
 
Регистрация: 23.03.2013
Сообщений: 9
По умолчанию

да я знаю как надо шифровать. просто я не знаю как реализовать эту замену символов(букв)....
mefisto85 вне форума Ответить с цитированием
Старый 24.03.2013, 17:02   #13
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Вы сами себе противоречите,
так знаете или не знаете?
s-andriano вне форума Ответить с цитированием
Старый 24.03.2013, 17:18   #14
mefisto85
 
Регистрация: 23.03.2013
Сообщений: 9
По умолчанию

я не знаю как на delphi это сделать....
mefisto85 вне форума Ответить с цитированием
Старый 24.03.2013, 17:25   #15
mefisto85
 
Регистрация: 23.03.2013
Сообщений: 9
По умолчанию

Сильно не смеяться.....
Код:
procedure TForm1.Button1Click(Sender: TObject);

Function DeleteRepeatChar(st:string):string; // Функция удаления одинаковых символов в строке

var buf:string;
begin
    while length(st)<>0 do
      begin
        buf:=buf+st[1];
        while pos(buf[length(buf)],st)<>0 do delete(st,pos(buf[length(buf)],st),1); 
      end;
    DeleteRepeatChar:=buf;
end;

var

l,k,j,i:integer; 
mes,a,st:string; 
shifr:array [1..15] of AnsiChar; //массив для шифр ключа
alf:array [1..15] of AnsiChar; //массив для остальных букв алфавита
flag: boolean; 

begin
  a:= 'абвгдежзиклмнопрстуфхцчшщьыэюя'; //алфавит 30 основных букв
  st:= Edit1.Text; // Поле с ключом(шифром)
  st:=StringReplace(st,' ','',[RFReplaceall]); //Удаляем пробелы
  st:= DeleteRepeatChar(st); //Удаляем одинаковые символы из строки
  for i := 1 to length(st) do 
      shifr[i]:=st[i]; //в цикле заносим каждую букву(15 разных) в массив

  k := 1; 
  for i := 1 to length(a) do begin
    flag := true;
    for l := 1 to 15 do
        if shifr[l] = a[i] then
            flag := false;
    if flag = true then begin
        alf[k] := a[i];
        k := k+1
    end;
  end;  //в этом цикле заносим в массив alf остальные 15 букв

  mes:=Memo1.Lines.Text; //Сообщение которое нужно зашифровать

  for i:=1 to length(mes) do begin  
    for j := 1 to 15 do
      if mes[i] = alf[j] then begin
        delete(mes,i,1);
        insert(shifr[j],mes,i);
    end;
  end;  //замена букв в сообщении

  Memo1.Lines.Add(mes); //Вывод зашифрованного сообщения

end;

end.
Что смог то и наворотил шифрует но не много не так как хотелось бы...

Последний раз редактировалось mefisto85; 24.03.2013 в 20:53.
mefisto85 вне форума Ответить с цитированием
Старый 24.03.2013, 19:57   #16
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Цитата:
Сообщение от mefisto85 Посмотреть сообщение
я не знаю как на delphi это сделать....
Напишите сначала по-русски.
А потом постепенно переводите на Delphi.
При этом запись по-русски превратится в комментарии.

У Вас в коде нет комментариев. Это одна из основных причин, по которым программа делает не совсем то, что Вам хочется.
s-andriano вне форума Ответить с цитированием
Старый 24.03.2013, 20:56   #17
mefisto85
 
Регистрация: 23.03.2013
Сообщений: 9
По умолчанию

Коментарии проставил. Ладно завтра буду дальше думать.... появились свежие мысли
mefisto85 вне форума Ответить с цитированием
Старый 24.03.2013, 22:52   #18
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от mefisto85
появились свежие мысли
на данном форуме помогают тем, кто что-то пытается сделать своими руками
(а, судя по вашему коду, Вы движетесь в нужном направлении)!

Поэтому успехов Вам!
Если возникнут "затыки" - пишите в данной теме, я более чем уверен, что Вас не оставят без помощи.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 25.03.2013, 10:19   #19
mefisto85
 
Регистрация: 23.03.2013
Сообщений: 9
Счастье

Вот код
Код:
procedure TForm1.Button1Click(Sender: TObject);

Function DeleteRepeatChar(st:string):string; // Функция удаления одинаковых символов в строке

var buf:string;
begin
    while length(st)<>0 do
      begin
        buf:=buf+st[1];
        while pos(buf[length(buf)],st)<>0 do delete(st,pos(buf[length(buf)],st),1);
      end;
    DeleteRepeatChar:=buf;
end;

var

l,k,j,i:integer;
mes,a,st:string; 
shifr:array [1..15] of AnsiChar; //массив для шифр ключа
alf:array [1..15] of AnsiChar; //массив для остальных букв алфавита
flag: boolean;

begin
  a:= 'абвгдежзиклмнопрстуфхцчшщьыэюя'; //алфавит 30 основных букв
  st:= Edit1.Text; // Поле с ключом(шифром)
  st:=StringReplace(st,' ','',[RFReplaceall]); //Удаляем пробелы
  st:= DeleteRepeatChar(st); //Удаляем одинаковые символы из строки
  for i := 1 to length(st) do 
      shifr[i]:=st[i]; //в цикле заносим каждую букву(15 разных) в массив

  k := 1;
  for i := 1 to length(a) do begin
    flag := true;
    for l := 1 to 15 do
        if shifr[l] = a[i] then
            flag := false;
    if flag = true then begin
        alf[k] := a[i];
        k := k+1
    end;
  end;  //в этом цикле заносим в массив alf остальные 15 букв

  mes:=Memo1.Lines.Text; //Сообщение которое нужно зашифровать

  for i:=1 to length(mes) do
    for j := 1 to 15 do
      if mes[i] = shifr[j] then begin
        delete(mes,i,1);
        insert(alf[j],mes,i);                 //замена букв в сообщении
      end
      else if mes[i] = alf[j] then begin
        delete(mes,i,1);
        insert(shifr[j],mes,i);
      end;

  Memo1.Lines.Add(mes); //Вывод зашифрованного сообщения

end;

end.
у меня в memo сразу расположенна строка которую необходимо зашифровать шифруется правильно кроме первой буквы он ее почему то вобще не трогает....

все сам допер пока писал это сообщение дело вот в чем первая буква у меня большая поэтому так получается ))) ура я ее сделал Да здравствует зачет !!!

Последний раз редактировалось mefisto85; 25.03.2013 в 10:27.
mefisto85 вне форума Ответить с цитированием
Старый 25.03.2013, 10:31   #20
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Молодца! Поздравляю!
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Прорисовка букв Миша Помощь студентам 3 19.05.2008 19:46
Количество букв! Marsik Помощь студентам 2 27.03.2008 19:18
кол-во букв в строке символов (Си) Newman Помощь студентам 1 04.12.2007 02:19