Advertisement
Guest User

Бродо мудила

a guest
May 4th, 2016
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.78 KB | None | 0 0
  1. unit Unit1;
  2.  
  3. interface
  4.  
  5. uses
  6. Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  7. Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.Grids,
  8. Vcl.Menus;
  9.  
  10. type
  11. TForm1 = class(TForm)
  12. StringGrid1: TStringGrid;
  13. MainMenu1: TMainMenu;
  14. N1: TMenuItem;
  15. N2: TMenuItem;
  16. N3: TMenuItem;
  17. N4: TMenuItem;
  18. N5: TMenuItem;
  19. N6: TMenuItem;
  20. N7: TMenuItem;
  21. N8: TMenuItem;
  22. N9: TMenuItem;
  23. N10: TMenuItem;
  24. N11: TMenuItem;
  25. N12: TMenuItem;
  26. N13: TMenuItem;
  27. N14: TMenuItem;
  28. N15: TMenuItem;
  29. StringGrid2: TStringGrid;
  30. OpenDialog1: TOpenDialog;
  31. SaveDialog1: TSaveDialog;
  32. procedure N3Click(Sender: TObject);
  33. private
  34. { Private declarations }
  35. public
  36. { Public declarations }
  37. end;
  38.  
  39. konus = record
  40. x:single;
  41. y:single;
  42. r:single;
  43. h:single;
  44. end;
  45.  
  46. type massive = array of konus;
  47.  
  48. var
  49. Form1: TForm1;
  50. konuses: massive;
  51. f: string;
  52. tfile: file;
  53.  
  54. implementation
  55.  
  56. {$R *.dfm}
  57. procedure sort(var v:massive; l,r:longint);
  58. var
  59. i,j:integer;
  60. w,q:konus;
  61. begin
  62. i := l; j := r;
  63. q := v[(l+r) div 2];
  64. repeat
  65. while (v[i].h * 1.047 * v[i].r * v[i].r < q.h * 1.047 * q.r * q.r) do inc(i);
  66. while (q.h * 1.047 * q.r * q.r < v[i].h * 1.047 * v[i].r * v[i].r) do dec(j);
  67. if i <= j then begin
  68. w := v[i]; v[i] := v[j]; v[j] := w;
  69. inc(i); dec(j)
  70. end;
  71. until (i > j);
  72. if (l < j) then sort(v,l,j);
  73. if (i < r) then sort(v,i,r);
  74. end;
  75.  
  76. procedure find(var v,x:massive);
  77. var
  78. sqrs: array of single;
  79. middle, sum, count: single;
  80. i,k: integer;
  81. begin
  82. k := 0;
  83. for i := 0 to length(v)-1 do begin
  84. sum := sum + v[i].h * 1.047 * v[i].r * v[i].r;
  85. count := count + 1;
  86. end;
  87. middle := sum / count;
  88. for i := 0 to length(v)-1 do begin
  89. if (v[i].h * 1.047 * v[i].r * v[i].r < middle) then begin
  90. k := k+1;
  91. SetLength(x,k);
  92. x[k] := v[i];
  93. end;
  94. end;
  95. end;
  96.  
  97. procedure add(var v:massive; x,y,r,h:single);
  98. var
  99. l: integer;
  100. begin
  101. l := length(v);
  102. l := l + 1;
  103. SetLength(v,l);
  104. v[l].x := x; v[l].y := y; v[l].r := r; v[l].h := h;
  105. end;
  106.  
  107. procedure TForm1.N3Click(Sender: TObject);
  108. var i,n:integer;
  109. a: konus;
  110. begin
  111. if OpenDialog1.Execute = true then
  112. begin
  113. f := OpenDialog1.FileName;
  114. Form1.Caption := f;
  115. assignfile(tfile,f);
  116. reset(tfile);
  117. n := FileSize(f);
  118. StringGrid1.RowCount := n+1;
  119. for i := 1 to n do
  120. begin
  121. read(f,a);
  122. StringGrid1.Cells[1,i] := IntToStr(a.x);
  123. StringGrid1.Cells[2,i] := IntToStr(a.y);
  124. StringGrid1.Cells[3,i] := IntToStr(a.r);
  125. StringGrid1.Cells[4,i] := IntToStr(a.h);
  126. end;
  127. closefile(tfile);
  128. for i := 0 to n do StringGrid1.Cells[0,i] := IntToStr(i);
  129. end;
  130.  
  131.  
  132. end;
  133.  
  134. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement