Что-то кончается, Что-то начинается...

-Анджей Сапковский-

среда, 22 июня 2011 г.

Экзамен по программированию(Delphi 7)

1. Задача - Конфети

Движение:

procedure TForm1.Timer1Timer(Sender: TObject);
begin
Randomize;
shape1.Left:=Random(200);
shape1.Top:=Random(300);

Цвет:

procedure TForm1.Timer2Timer(Sender: TObject);
begin
Form1.Shape1.Brush.Color:=RGB(Random(256), Random(256), Random(256));

Размер:
Form1.Shape1.Height:=Random(150)+70;

Итого, 2 таймера и сколько нужно Shape.

2. Задание массива

Заполняем двумерный массив в StringGrid рандомно:

procedure TForm1.ButtonRandomClick(Sender: TObject);
var i,j:integer;
begin
i:=1;j:=1;
for j:=1 to Form1.StringGrid1.RowCount do
for i:=1 to Form1.StringGrid1.ColCount do
StringGrid1.Cells[i-1,j-1]:=FloatToStr(random(1000)+random(10)*random(100));
end;

Смена диагоналей 1 вариант:

seGA*: масссив ты создаш двумерный, далее его в стринггрид занесешь
seGA*: теперь у тебя получается например 5 элементов строки и 5 элементов по диагонали, ну это зависит от размерности массива
seGA*: далее создаешь цикл фор на 5 действий
seGA*: теперь следует определится с индексами элементов, т.е. просто представить какие индексы имеют элементы строки и диагонали
seGA*: строки имеют индексы 11 21 31 41 51 например
seGA*: а диагонали 11 22 33 44 55
seGA*: теперь придумать зависимость чтобы 11 остался на месте 21 поменялся с 22 31 с 33 ит.д.

for i:=1 to max do
  begin
  x:=a[1,i];
  a[1,i]:=a[i,i];
  a[i,i]:=x;
  end;

for i:=1 to max do
  for j:=1 to max do
  StringGrid5.Cells[i-1,j-1]:=inttostr(a[i,j]);
seGA*: замена всегда производится через переменную
seGA*: в данном примере х

Смена диагоналей 2 вариант:

procedure TForm1.ButtonDiagonaliClick(Sender: TObject);
var i,j:integer;
  buf: string;
begin
 i:=0; j:=0;
 while i <= (n-1) do
 begin
   buf:=StringGrid1.Cells[i,j];
   StringGrid1.Cells[i,j]:=StringGrid1.Cells[(n-1-i),j];
   StringGrid1.Cells[(n-1-i),j]:=buf;
   i:=i+1; j:=j+1;
 end;

Размер:

procedure TForm1.ButtonRazmerClick(Sender: TObject);
begin
  n:=StrToInt(Form1.EditRazmer.Text);
  Form1.StringGrid1.RowCount:=n;
  Form1.StringGrid1.ColCount:=n;
end;

Порядок:

procedure TForm1.ButtonPoryadokClick(Sender: TObject);
var i,j,k,buf: integer;
  b:array of integer;
  f:boolean;
begin

 i:=1; j:=1; k:=1;
 SetLength(b, (n*n));
 for j:=1 to n do
 for i:=1 to n do
     begin
     b[k]:=StrToInt(StringGrid1.Cells[i-1,j-1]);
     k:=k+1;
     end;


 repeat
       f:=false;
       for k:=1 to (n*n) do 
       begin
         if b[k]>b[k+1] then
         begin
           f:=true;
           buf:=b[k];b[k]:=b[k+1];b[k+1]:=buf;
         end;
       end;
 until not f;
k:=1;
for j:=1 to Form1.StringGrid1.RowCount do
for i:=1 to Form1.StringGrid1.ColCount do
    begin
      StringGrid1.Cells[i-1,j-1]:=IntToStr(b[k]); k:=k+1;
    end;
end;

Сумма элементов:


var
  Form1: TForm1;
     byteArray  : Array of Byte;
      i,j,k : Integer;
begin
SetLength(byteArray, 5);
  ShowMessage('Длина массива = '+IntToStr(Length(byteArray)));
      for i := 0 to 4 do
     byteArray:=i*(22);
         j:=byteArray[1]+byteArray[3]+byteArray[5];
            k:=byteArray[2]+byteArray[4];
     ShowMessage('byteArray элемент 1 = '+IntToStr(byteArray[1])+','+#13#10+
     'byteArray элемент 2 = '+IntToStr(byteArray[2])+
     ','+#13#10+'byteArray элемент 3 = '+IntToStr(byteArray[3])+
     ','+#13#10+'byteArray элемент 4 = '+IntToStr(byteArray[4])+
     ','+#13#10+'byteArray элемент 5 = '+IntToStr(byteArray[5])+
     ','+#13#10+'сумма нечетных элементов = '+IntToStr(j)+
     ',''сумма четных элементов = '+IntToStr(k));
      ShowMessage('элемент массива 4 = '+IntToStr(byteArray[4]));
            ShowMessage('сумма нечетных элементов = '+IntToStr(j));
                ShowMessage('сумма четных элементов = '+IntToStr(k));


***
Продвижение неизбежно не забывайте об этом=)



0 коммент.:

Отправить комментарий