Анализ входного файла программы и вывод результатов в выходной файл
iosi,xosi,xx: integer;
sumploshadi,hh:real;
l1,l2:integer;
implementation
uses Unit2;
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject); // Процедура создания формы
var
stemp: string;
bb:boolean;
begin
Vv.Lines.LoadFromFile('input.txt'); // Загружаем координаты с файла
Memo.Lines.LoadFromFile('TOSHONADO.txt'); // Загружаем координаты с файла
n:= StrToInt(Vv.Lines[0]); //Cчитываем количество треугольников
s:=Vv.Lines[0];
Vv.Lines.Delete(0);
{Заполняем координаты в TMemo1}
For i:=0 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]);
{Находим сумму площадей всех введеных треугольников}
sumploshadi:=sumploshadi+Abs((1/2)*((oskolok[2].Y-
oskolok[1].Y)*oskolok[3].X+
(oskolok[1].X-oskolok[2].X)*oskolok[3].Y+
(oskolok[2].X-oskolok[1].X)*oskolok[1].Y-
(oskolok[2].Y-oskolok[1].Y)*oskolok[1].X));
{Рисуем треугольники, которые ввёл пользователь на Image1}
Image1.Canvas.Pen.Color:=Random(4000000); // Выбираем цвет линий
Image1.Canvas.Pen.Style :=psInsideFrame; // Выбираем стиль линий
Image1.Canvas.MoveTo(20+oskolok[1].X,126-oskolok[1].Y); //Движемся к нужной точке
Image1.Canvas.LineTo(20+oskolok[2].X,126-oskolok[2].Y); //Соединяем линией две точки
Image1.Canvas.MoveTo(20+oskolok[2].X,126-oskolok[2].Y); //Движемся к нужной точке
Image1.Canvas.LineTo(20+oskolok[3].X,126-oskolok[3].Y); //Соединяем линией две точки
Image1.Canvas.MoveTo(20+oskolok[3].X,126-oskolok[3].Y); //Движемся к нужной точке
Image1.Canvas.LineTo(20+oskolok[1].X,126-oskolok[1].Y); //Соединяем линией две точки
{Проверяем сколько осколков ввёл пользователь(их должно быть не меньше четырёх)}
if N<4 then begin
result := false;
Application.MessageBox('Простите, но количество треугольников слишком мало'+
'(меньше 4)','Ошибка',MB_OK+MB_ICONError); //Выводим сообщение об ошибке
Button1.Enabled:=False; //Блокируем кнопку
exit;
end;
{Проверяем есть ли среди введеных треугольников, треугольники с нулевой площадью}
If oskolok[1].X = oskolok[2].X then begin
if oskolok[2].X = oskolok[3].X then begin
Application.MessageBox('Простите, но площадь одного из треугольников равна нулю'
,'Ошибка',MB_OK+MB_ICONError); // Выводим сообщение об ошибке
Button1.Enabled:=False; //Блокируем кнопку
exit;
end;
end;
If oskolok[1].Y = oskolok[2].Y then begin
if oskolok[2].Y = oskolok[3].Y then begin
Application.MessageBox('Простите, но площадь одного из треугольников равна нулю'
,'Ошибка',MB_OK+MB_ICONError); // Выводим сообщение об ошибке
Button1.Enabled:=False; //Блокируем кнопку
exit;
end;
end;
{Создаём оси паралельности}
{Ось паралельности ОХ1 по левой стороне стола}
If (oskolok[1].X = oskolok[2].X) then begin
If (oskolok[3].X>oskolok[1].X) then begin
xx:=xx+1;
end;
end;
If (oskolok[2].X = oskolok[3].X) then begin
If (oskolok[1].X>oskolok[1].X) then begin
xx:=xx+1;
end;
end;
If (oskolok[1].X = oskolok[3].X) then begin
If (oskolok[2].X>oskolok[1].X) then begin
xx:=xx+1;
end;
end;
{Ось паралельности ОХ2 по правой стороне стола}
If (oskolok[1].X = oskolok[2].X) then begin
If (oskolok[3].X<oskolok[1].X) then begin
xx:=xx+1;
end;
end;
If (oskolok[2].X = oskolok[3].X) then begin
If (oskolok[1].X<oskolok[1].X) then begin
xx:=xx+1;
end;
end;
If (oskolok[1].X = oskolok[3].X) then begin
If (oskolok[2].X<oskolok[1].X) then begin
xx:=xx+1;
end;
end;
{Ось паралельности ОУ1 по нижней стороне стола}
If (oskolok[1].Y = oskolok[2].Y) then begin
If (oskolok[3].Y>oskolok[1].Y) then begin
xx:=xx+1;
end;
end;
If (oskolok[2].Y = oskolok[3].Y) then begin
If (oskolok[1].Y>oskolok[1].Y) then begin
xx:=xx+1;
end;
end;
If (oskolok[1].Y = oskolok[3].Y) then begin
If (oskolok[2].Y>oskolok[1].Y) then begin
xx:=xx+1;
end;
end;
If (oskolok[1].Y = oskolok[2].Y) then begin
If (oskolok[3].Y<oskolok[1].Y) then begin
xx:=xx+1;
end;
end;
If (oskolok[2].Y = oskolok[3].Y) then begin
If (oskolok[1].Y<oskolok[1].Y) then begin
xx:=xx+1;
end;
end;
If (oskolok[1].Y = oskolok[3].Y) then begin
If (oskolok[2].Y<oskolok[1].Y) then begin
xx:=xx+1;
end;
end;
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)); //Выводим без изменений координаты осколков на TMemo2
end;
////////Конец цикла
{Выводим сообщения о количестве треугольноков со сторонами с паралельными осям}
If xx=n-2 then begin
Application.MessageBox(PCHar('Ощибка - треугольников с параллельными осям сторонами всего лишь:'+INtToStr(Xx+2)),0); // Выводим сообщение об ошибке
Button1.Enabled:=False;
end;
end;
procedure TForm1.Button1Click(Sender: TObject); //Процедура выполнения расчётов и вывода данных
begin
Vv2.Lines.Clear; // Очишаем TMemo2
Vv2.Lines.Add('Выполняем расчет'); // Начинаем выводить текст на TMemo2
{Выводим без изменений координаты первого осколка на TMemo2}
oskolok[1].X:=StrToInt(Vv.Lines[0]);
oskolok[1].Y:=StrToInt(Vv.Lines[1]);
oskolok[2].X:=StrToInt(Vv.Lines[2]);
oskolok[2].Y:=StrToInt(Vv.Lines[3]);
oskolok[3].X:=StrToInt(Vv.Lines[4]);
oskolok[3].Y:=StrToInt(Vv.Lines[5]);
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.Canvas.Pen.Color:=clBlue; //Задаём цвет рисунку на 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);
//////////XXX
{Находим координаты точки удара}
If (oskolok[1].X = oskolok[2].X) then begin
nomervershiny:=3;
osnX:= oskolok[3].X;
osnY:=oskolok[3].Y;
l1:=l1+Abs(oskolok[2].Y-oskolok[1].Y);
end;
If (oskolok[2].X = oskolok[3].X) then begin
l1:=l1+Abs(oskolok[3].Y-oskolok[2].Y);
nomervershiny:=1;
osnX:= oskolok[1].X;
osnY:=oskolok[1].Y;
end;
If (oskolok[1].X = oskolok[3].X) then begin
l1:=l1+Abs(oskolok[1].Y-oskolok[3].Y);
nomervershiny:=2;
osnX:= oskolok[2].X;
Другие рефераты на тему «Программирование, компьютеры и кибернетика»:
Поиск рефератов
Последние рефераты раздела
- Основные этапы объектно-ориентированного проектирования
- Основные структуры языка Java
- Основные принципы разработки графического пользовательского интерфейса
- Основы дискретной математики
- Программное обеспечение системы принятия решений адаптивного робота
- Программное обеспечение
- Проблемы сохранности информации в процессе предпринимательской деятельности