
17.03.2010, 17:22
|
|
Познающий
Регистрация: 17.02.2010
Сообщений: 45
С нами:
8542140
Репутация:
47
|
|
superboy4..покопался в твоем коде, честно, не особо понял что там написано  написал с нуля, вот код, прокоментил все, чтобы было понятно, если что-то все равно не понятно, спрашивай
Код:
unit Enciphering;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, StdCtrls;
type
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Label1: TLabel;
Label2: TLabel;
Button1: TButton;
StringGrid1: TStringGrid;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
const
n = 1000; // длина строки
dif = 224; // разница между символами в ASCII
var
Form1: TForm1;
key, tex: string;
tqu, kqu: integer;
rez: string;
tx: set of 'а'..'я';
tnum, knum, code: array [1..n] of integer;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
i: integer;
begin
tex:=Edit1.Text; // Для текста
key:=Edit2.Text; // Для ключа
rez:=''; // Наш ответ
tqu:=length(tex); // Длина текста
kqu:=length(key); // Длина ключа
for i:=1 to length(tex) do tnum[i]:=-1; // Исключение инородных сиволов
for i:=1 to length(tex) do knum[i]:=0; // Обнуление
code:=knum;
for i:=1 to tqu do
if tex[i] in tx then tnum[i]:=ord(tex[i]) - dif; // Нахождение порядкового номера в алфавите (отсчет от 0 до 30)
for i:=1 to kqu do
knum[i]:=ord(key[i]) - dif;
for i:=kqu + 1 to tqu do
knum[i]:=knum[i - kqu]; // Дополнение ключа в случае если его длина меньше длины строки
for i:=1 to tqu do
if tnum[i]<> -1 then code[i]:=(tnum[i] + knum[i]) mod 32
else code[i]:=ord(' ')-dif; // Само шифрование
for i:=1 to tqu do
rez:= rez + chr(code[i] + dif); // Получение ответа
stringgrid1.ColCount:=tqu+1;
for i:=1 to tqu do
StringGrid1.Cells[i, 0]:=tex[i];
for i:=1 to tqu do
StringGrid1.Cells[i, 1]:=rez[i]; // Вывод ответа
end;
end.
|
|
|

18.03.2010, 08:34
|
|
Новичок
Регистрация: 16.11.2008
Сообщений: 27
С нами:
9201836
Репутация:
6
|
|
начал осваивать Visual Basic и появился такой вопрос. Почему после изменения размеров кнопки при загрузке формы при каждом выполнении программы форма меняет свои координаты расположения на экране?выстраивая их как будто каскадом.
код состоит всего из 3-х строк:
Код:
Private Sub Form_Load()
Randomize
Command1.Height = 2625 * Rnd
Command1.Width = 3360 * Rnd
End Sub
|
|
|

18.03.2010, 09:48
|
|
Участник форума
Регистрация: 14.03.2009
Сообщений: 237
С нами:
9031410
Репутация:
314
|
|
Сообщение от DimkO
начал осваивать Visual Basic и появился такой вопрос. Почему после изменения размеров кнопки при загрузке формы при каждом выполнении программы форма меняет свои координаты расположения на экране?выстраивая их как будто каскадом.
код состоит всего из 3-х строк:
Код:
Private Sub Form_Load()
Randomize
Command1.Height = 2625 * Rnd
Command1.Width = 3360 * Rnd
End Sub
Функция Rnd возвращает значение, которое меньше 1, но больше или равно нулю.
Cпособ генерации случайного числа в функции Rnd определяется значением параметра Number.
Вот тебе и каскад...
|
|
|

18.03.2010, 11:02
|
|
Участник форума
Регистрация: 18.07.2009
Сообщений: 278
С нами:
8850305
Репутация:
259
|
|
так потому что у тебя форма строится методом рандома!!! Rnd - функция генерации случайных чисел!
|
|
|

18.03.2010, 15:28
|
|
Новичок
Регистрация: 16.11.2008
Сообщений: 27
С нами:
9201836
Репутация:
6
|
|
Сообщение от EndLeSSDre@M
так потому что у тебя форма строится методом рандома!!! Rnd - функция генерации случайных чисел!
но я же использую рандом для задания координат кнопки а не формы,почему оно на форму влияет не пойму...=\
|
|
|
Задачка на тему программирования. |

18.03.2010, 14:42
|
|
Новичок
Регистрация: 18.12.2009
Сообщений: 5
С нами:
8630327
Репутация:
0
|
|
Задачка на тему программирования.
Помогите пожалуйста решить задачку. Pascal

|
|
|

18.03.2010, 14:58
|
|
Banned
Регистрация: 08.04.2005
Сообщений: 446
С нами:
11099536
Репутация:
518
|
|
при данных условиях задача не имеет единственного решения! Маленькие кружки с радиусом R3 могут свободно перемещаться обеспечивая касание как с большой R1 так и с малой R2 окружностями при R1=R2+R3 .... при этом площадь будет меняться!
при R1<R2+R3 можно решить но нужны координаты центров R3
при R1>R2+R3 НЕТ РЕШЕНИЙ
Уточни задачу!
Последний раз редактировалось Delimiter; 18.03.2010 в 15:02..
|
|
|

18.03.2010, 15:08
|
|
Новичок
Регистрация: 18.12.2009
Сообщений: 5
С нами:
8630327
Репутация:
0
|
|
Сообщение от Delimiter
Уточни задачу!
задача такая как и есть, это весь ее текст
|
|
|

18.03.2010, 14:59
|
|
Участник форума
Регистрация: 19.05.2007
Сообщений: 281
С нами:
9989619
Репутация:
106
|
|
pi := 3.14;
S := pi(( (sqr(r1)+sqr(r2))/2) - sqr(r3));
Это если предположить что окружности находяться на одной линии.
Последний раз редактировалось St0nX; 18.03.2010 в 15:11..
|
|
|

18.03.2010, 15:28
|
|
Участник форума
Регистрация: 06.02.2006
Сообщений: 177
С нами:
10661593
Репутация:
88
|
|
Delimiter погорячился
т.к. 2*r3+r2=r1
Последний раз редактировалось Irdis; 18.03.2010 в 15:31..
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|