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

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;

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


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

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

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

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