Анализ входного файла программы и вывод результатов в выходной файл

osnY:=oskolok[2].Y;

end;

If (oskolok[1].Y = oskolok[2].Y) then begin

l2:=l2+Abs(oskolok[1].X-oskolok[2].X);

nomervershiny:=3;

osnX:= oskolok[3].X;

osnY:=oskolok[3].Y;

end;

If (oskolok[2].Y = oskolok[3].Y) then begin

l2:=l2+Abs(oskolok[2].X-oskolok[3].X);

nomervershiny:=1;

osnX:= oskolok[1].X;

osnY:=oskolok[1].Y;

end;

If (oskolok[1].Y = osk

olok[3].Y) then begin

l2:=l2+Abs(oskolok[1].X-oskolok[3].X);

nomervershiny:=2;

osnX:= oskolok[2].X;

osnY:=oskolok[2].Y;

end;

//////////////////////////

{Считываем координаты отрезков до изменений}

For i:=1 to n-1 do begin

oskolok[1].X:=StrToInt(Vv.Lines[i*6]);

oskolok[1].Y:=StrToInt(Vv.Lines[i*6+1]);

oskolok[2].X:=StrToInt(Vv.Lines[i*6+2]);

oskolok[2].Y:=StrToInt(Vv.Lines[i*6+3]);

oskolok[3].X:=StrToInt(Vv.Lines[i*6+4]);

oskolok[3].Y:=StrToInt(Vv.Lines[i*6+5]);

{Находим длины сторон треугольников, которые паралельны осям OX}

If (oskolok[1].X = oskolok[2].X) then begin

nomervershiny:=3;

l1:=l1+Abs(oskolok[1].Y-oskolok[2].Y);

end;

If (oskolok[2].X = oskolok[3].X) then begin

nomervershiny:=1;

l1:=l1+Abs(oskolok[2].Y-oskolok[3].Y);

end;

If (oskolok[1].X = oskolok[3].X) then begin

nomervershiny:=2;

l1:=l1+Abs(oskolok[1].Y-oskolok[3].Y);

end;

{Находим длины сторон треугольников, которые паралельны осям OУ}

If (oskolok[1].Y = oskolok[2].Y) then begin

nomervershiny:=3;

l2:=l2+Abs(oskolok[1].X-oskolok[2].X);

end;

If (oskolok[2].Y = oskolok[3].Y) then begin

l2:=l2+Abs(oskolok[2].X-oskolok[3].X);

nomervershiny:=1;

end;

If (oskolok[1].Y = oskolok[3].Y) then begin

l2:=l2+Abs(oskolok[1].X-oskolok[3].X);

nomervershiny:=2;

end;

{Находим разницы координат вершин для паралельного переноса}

razX:= oskolok[nomervershiny].X-osnX;

razY:= oskolok[nomervershiny].Y-osnY;

{Расчитываем координаты вершин после переноса}

oskolok[1].X:=oskolok[1].X-razX;

oskolok[1].Y:=oskolok[1].Y-razY;

oskolok[2].X:=oskolok[2].X-razX;

oskolok[2].Y:=oskolok[2].Y-razY;

oskolok[3].X:=oskolok[3].X-razX;

oskolok[3].Y:=oskolok[3].Y-razY;

{Выводим координаты осколков после перенесения в точку удара}

Vv2.Lines.Add(IntToStr(oskolok[1].X) + ' '+IntToStr(oskolok[1].Y)+' ' +

IntToStr(oskolok[2].X)+ ' '+IntToStr(oskolok[2].Y)+

' ' +

IntToStr(oskolok[3].X)+' '+IntToStr(oskolok[3].Y));

{Рисуем треугольники, после перемещения на Image2( они образуют прямоугольник)}

Image2.Canvas.MoveTo(20+oskolok[1].X,126-oskolok[1].Y);

Image2.Canvas.LineTo(20+oskolok[2].X,126-oskolok[2].Y);

Image2.Canvas.MoveTo(20+oskolok[2].X,126-oskolok[2].Y);

Image2.Canvas.LineTo(20+oskolok[3].X,126-oskolok[3].Y);

Image2.Canvas.MoveTo(20+oskolok[3].X,126-oskolok[3].Y);

Image2.Canvas.LineTo(20+oskolok[1].X,126-oskolok[1].Y);

end;

hh:=(l1/2)*(l2/2); //Находим площадь образовавшегося прямоугольника

{Проверяем на равенство сумму площадей треугольников и прямоугольника}

If hh<>sumploshadi then begin

Application.MessageBox('Площади НЕ равны','Ошибка',MB_OK); // Выводим сообщение о неравенстве площадей

bUTTon1.Enabled := False; // Блокируем кнопку

end;

end;

{Задаём меню}

procedure TForm1.N2Click(Sender: TObject); // "Выход"

begin

Application.Terminate;

end;

procedure TForm1.N4Click(Sender: TObject); // "О программе"

begin

Form2.Show; // Открываем Form2

end;

procedure TForm1.N5Click(Sender: TObject); // "Обновить"

begin

Vv2.Lines.Clear; // Очищаем TMemo2

end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); // Процедура закрытия TForm1

begin

Application.Terminate;

end;

end.

Приложение Б. Результаты работы программы.

Страница:  1  2  3 


Другие рефераты на тему «Программирование, компьютеры и кибернетика»:

Поиск рефератов

Последние рефераты раздела

Copyright © 2010-2024 - www.refsru.com - рефераты, курсовые и дипломные работы