Как перевести из делфи на паскаль? - Free Pascal

Узнай цену своей работы

Формулировка задачи:

Листинг программы
  1. Var
  2. i:SmallInt;
  3. k:LongInt;
  4. BinString:String;//Здесь двоичное представление текста сообщения
  5. RecString:String; //Здесь считанная из файла строка
  6. MY_IN_FILE:TextFile; //Файл-контейнер
  7. MY_OUT_FILE:TextFile; //Файл-контейнер с сообщением
  8. Begin
  9. AssignFile(MY_IN_FILE,FileName);//Присваиваем файлу-контейнеру
  10. //дескриптор MY_IN_FILE. В переменной FileName имя файла, имя в эту
  11. //переменную заносится процедурой кнопки Открыть файл
  12. AssignFile(MY_OUT_FILE,’Задание3.txt’); //Создаём файл Задание3.txt в
  13. //который запишем содержимое файла-контейнера и зашифрованное сообщение и
  14. //присваиваем ему дескриптор MY_OUT_FILE.
  15. Reset(MY_IN_FILE);//Открываем файл-контейнер для чтения
  16. ReWrite(MY_OUT_FILE);//Открываем файл для записи
  17. BinString:=StrToBin(Edit1.Text);//В строке BinString двоичное
  18. //представление строки введённой в Edit1
  19. k:=1; //Присваиваем k:=1 для того чтобы обрабатывать BinString с
  20. //первого символа
  21. While Not Eof(MY_IN_FILE) Do //До конца файла контейнера
  22. Begin
  23. ReadLn(MY_IN_FILE,RecString);//Читаем одну строчку из файла
  24. For i:=1 To Length(RecString) Do//Перебираем символы этой строчки
  25. Begin
  26. If RecString[i]=' ' Then//Если встретился пробел то проверяем
  27. //чему равен очередной бит скрываемой информации
  28. Begin
  29. Case BinString[k] Of
  30. '1':Insert(' ',RecString,i);//Если бит равен 1 то перед пробелом пишем
  31. //пробел
  32. '0':Insert('',RecString,i);//Если бит равен 0 то ничего не пишем
  33. End;
  34. Inc(k);//Увеличиваем k на 1 чтобы обработать следущий бит информации
  35. End;
  36. End;
  37. WriteLn(MY_OUT_FILE,RecString); //Записываем обработанную строку в файл
  38. End;
  39. CloseFile(MY_OUT_FILE); //Закрываем файл-контейнер
  40. CloseFile(MY_IN_FILE); //Закрываем файл-контейнер с спрятанным
  41. //сообщением
  42. ShowMessage('Строка спрятана'); //Выводим сообщение о завершении работы
  43. End;

Решение задачи: «Как перевести из делфи на паскаль?»

textual
Листинг программы
  1. Function StrToBin(TextValue:String):String;
  2. Function DecToBin(x:integer):string;
  3. const c:array [0..1] of char= ('0','1');
  4. var res:string;
  5.     d:0..1;
  6. begin
  7. res:='';
  8. while x<>0 do
  9.  begin
  10.   d:=x mod 2;
  11.   res:=c[d]+res;
  12.   x:=x div 2;
  13.  end;
  14. DecToBin:=res;
  15. end;
  16. Var
  17. TempString:String;
  18. OctString:String;
  19. BinString:String;
  20. i,k:Integer;
  21. Begin
  22. For i:=1 To Length(TextValue) Do
  23.  Begin
  24.   TempString:=DecToBin(Ord(TextValue[i]));
  25.   OctString:='';
  26.   If Length(TempString)<8 Then
  27.   For k:=1 To 8-Length(TempString) Do
  28.   OctString:=OctString+'0';
  29.   TempString:=OctString+TempString;
  30.   BinString:=BinString+TempString;
  31.   StrToBin:=BinString;
  32.  End;
  33. End;
  34.  
  35. Var i,k:Integer;
  36.     BinString:String;//Здесь двоичное представление текста сообщения
  37.     RecString:String; //Здесь считанная из файла строка
  38.     MY_IN_FILE:Text; //Файл-контейнер
  39.     MY_OUT_FILE:Text; //Файл-контейнер с сообщением
  40. Begin
  41. Assign(MY_IN_FILE,'1.txt');
  42. Assign(MY_OUT_FILE,'Задание3.txt');
  43. Reset(MY_IN_FILE);
  44. ReWrite(MY_OUT_FILE);
  45. writeln('Введите строку');
  46. readln(BinString);
  47. BinString:=StrToBin(BinString);
  48. k:=1;
  49. While Not Eof(MY_IN_FILE) Do
  50.  Begin
  51.   ReadLn(MY_IN_FILE,RecString);
  52.   For i:=1 To Length(RecString) Do
  53.    Begin
  54.     If RecString[i]=' ' Then
  55.      Begin
  56.       Case BinString[k] Of
  57.       '1':Insert(' ',RecString,i);
  58.       '0':Insert('',RecString,i);
  59.      End;
  60.    Inc(k);
  61.    End;
  62.   End;
  63. WriteLn(MY_OUT_FILE,RecString);
  64. End;
  65. Close(MY_OUT_FILE);
  66. Close(MY_IN_FILE);
  67. writeln('Строка спрятана');
  68. readln
  69. End.

Объяснение кода листинга программы

  1. Функция StrToBin преобразует строку в двоичное представление.
  2. Функция DecToBin преобразует десятичное число в двоичное представление.
  3. Вектор c содержит символы '0' и '1'.
  4. Переменная res используется для хранения промежуточных результатов в функции StrToBin.
  5. Переменная d используется для хранения остатка от деления в функции StrToBin.
  6. Переменная x используется в цикле while в функции StrToBin.
  7. Переменная TempString используется для хранения промежуточных результатов в функции StrToBin.
  8. Переменная OctString используется для хранения промежуточных результатов в функции StrToBin.
  9. Переменная BinString используется для хранения промежуточных результатов в функции StrToBin.
  10. Переменная i используется в цикле for в функции StrToBin.
  11. Переменная k используется в цикле for в функции StrToBin.
  12. Переменная RecString используется для чтения данных из файла в функции StrToBin.
  13. Переменная MY_IN_FILE используется для чтения данных из файла в функции StrToBin.
  14. Переменная MY_OUT_FILE используется для записи данных в файл в функции StrToBin.
  15. Цикл while в функции StrToBin используется для чтения данных из файла до конца.
  16. Вектор c используется для сравнения символов в функции StrToBin.
  17. Функция Insert используется для вставки пробелов или удаления пробелов в строке в функции StrToBin.
  18. Переменная k используется для отслеживания количества прочитанных символов в функции StrToBin.
  19. Переменная i используется в цикле for в функции StrToBin.
  20. Переменная BinString используется для хранения двоичного представления текста сообщения в функции StrToBin.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4.071 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы