добрый день, нужна помощь
есть программа расчёта пересечения окружностей, помогли сделать чтение из файла, но как сделать запись в файл с начала?
пробовал сам сделать, но бред получается
| Код |
unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls;
type TForm1 = class(TForm) LabeledEdit1: TLabeledEdit; LabeledEdit2: TLabeledEdit; LabeledEdit3: TLabeledEdit; LabeledEdit4: TLabeledEdit; LabeledEdit5: TLabeledEdit; LabeledEdit6: TLabeledEdit; Button1: TButton; LabeledEdit7: TLabeledEdit; btn2: TButton; procedure Button1Click(Sender: TObject); procedure btn2Click(Sender: TObject); private { Private declarations } public { Public declarations } end;
var Form1: TForm1;
implementation
{$R *.dfm}
// думал сделать так, добавить еще одну кнопку и сохранять данные, но абракадабра получается ( procedure TForm1.btn2Click(Sender: TObject); var x1,y1,r1,x2,y2,r2:integer; a:textfile; begin
AssignFile(a,'Coord.txt');//файл в папке с программой Rewrite(a); Writeln (a,x1,y1,r1,x2,y2,r2); CloseFile(a);
LabeledEdit1.Text:=IntToStr(x1); LabeledEdit2.Text:=IntToStr(y1); LabeledEdit3.Text:=IntToStr(r1); LabeledEdit4.Text:=IntToStr(x2); LabeledEdit5.Text:=IntToStr(y2); LabeledEdit6.Text:=IntToStr(r2);
Append(a); Read(a); end;
// программа чтения из файла к примеру 4 4 4 и в след строке 5 5 5 - работает procedure TForm1.Button1Click(Sender: TObject); const e=0.0001; var x1,y1,r1,x2,y2,r2:integer; x,y,a,b,h,d,x3,y3,x4,y4:real; f:textfile;
begin AssignFile(f,'Coord.txt');//файл в папке с программой Reset(f); Read(f,x1,y1,r1,x2,y2,r2); CloseFile(f); LabeledEdit1.Text:=IntToStr(x1); LabeledEdit2.Text:=IntToStr(y1); LabeledEdit3.Text:=IntToStr(r1); LabeledEdit4.Text:=IntToStr(x2); LabeledEdit5.Text:=IntToStr(y2); LabeledEdit6.Text:=IntToStr(r2); Append(f); Writeln(f,''); if (abs(x1-x2)<e)and(abs(y1-y2)<e)and(abs(r1-r2)<e) then begin LabeledEdit7.Text:='Окружности совпадают'; Writeln(f,'Окружности совпадают'); end else begin d:=sqrt(sqr(x1-x2)+sqr(y1-y2)); if (d>r1+r2)or(d<abs(r1-r2)) then begin LabeledEdit7.Text:='Точек пересечения нет'; Writeln(f,'Точек пересечения нет'); end else if abs(d-(r1+r2))<0.000001 then begin x:=(x1+x2)/2; y:=(y1+y2)/2; LabeledEdit7.Text:='Окружности касаются в точке x=' +FloattostrF(x,ffFixed,6,2)+' y=' +FloattostrF(y,ffFixed,6,2); Writeln(f,'Окружности касаются в точке x=',x:0:2,' y=',y:0:2); end else begin b:=(sqr(r2)-sqr(r1)+sqr(d))/(2*d); a:=d-b; h:=sqrt(sqr(r2)-sqr(b)); x:=x1+(x2-x1)/(d/a); y:=y1+(y2-y1)/(d/a); x3:=x-(y-y2)*h/b; y3:=y+(x-x2)*h/b; x4:=x+(y-y2)*h/b; y4:=y-(x-x2)*h/b; LabeledEdit7.Text:='Точки пересечения x1=' +FloattostrF(x3,ffFixed,6,2)+' y1=' +FloattostrF(y3,ffFixed,6,2) +' x2='+FloattostrF(x4,ffFixed,6,2)+' y2=' +FloattostrF(y4,ffFixed,6,2); Writeln(f,'Точки пересечения x1=',x3:0:2,' y1=',y3:0:2,' x2=',x4:0:2,' y2=',y4:0:2); end; end; CloseFile(f); end;
end.
|
|