Анализ входного файла программы и вывод результатов в выходной файл
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.
Приложение Б. Результаты работы программы.
Другие рефераты на тему «Программирование, компьютеры и кибернетика»:
Поиск рефератов
Последние рефераты раздела
- Основные этапы объектно-ориентированного проектирования
- Основные структуры языка Java
- Основные принципы разработки графического пользовательского интерфейса
- Основы дискретной математики
- Программное обеспечение системы принятия решений адаптивного робота
- Программное обеспечение
- Проблемы сохранности информации в процессе предпринимательской деятельности