Записать в файл F2 информацию о всех кругах файла F1, целиком лежащих в максимальном найденном круге - PascalABC.NET

Узнай цену своей работы

Формулировка задачи:

Создать файл F1, содержащий записи о параметрах заданного числа кругов. Каждая запись файла должна включать случайные координаты центра из интервала [0.0,10.1] и случайный радиус из [0.0,5.0], полученные Random. Записать в файл F2 информацию о всех кругах файла F1, целиком лежащих в максимальном найденном круге.

Решение задачи: «Записать в файл F2 информацию о всех кругах файла F1, целиком лежащих в максимальном найденном круге»

textual
Листинг программы
program practice;
type krug=record
         x,y,r:real;
         end;
var f1,f2: file of krug;
    z,zmx:krug;
    n,i,imx,k: integer;
    mx:real;
begin
randomize;
assign (f1, 'input');
rewrite(f1);
write('Введите число кругов:');
readln(N);
for i := 1 to N do
 begin
  z.x:=10.1*random;
  z.y:=10.1*random;
  z.r:=5*random;
  write(f1,z)
 end;
writeln('Содержание файла F1');
seek(f1,0);
mx:=0;
while not eof(f1) do
 begin
  read(f1,z);
  write('(',z.x:5:2,',',z.y:5:2,',',z.r:5:2,') ');
  if pi*sqr(z.r)>mx then
   begin
    mx:=pi*sqr(z.r);
    zmx:=z
   end;
 end;
writeln;
writeln('Самый большой круг (',zmx.x:5:2,',',zmx.y:5:2,',',zmx.r:5:2,') его площадь=',mx:0:2);
assign(f2,'output');
rewrite(f2);
seek(f1,0);
k:=0;
while not eof(f1) do
 begin
  read(f1,z);
  if sqrt(sqr(z.x-zmx.x)+sqr(z.y-zmx.y))<zmx.r-z.r then
   begin
    k:=1;
    write(f2,z);
   end;
 end;
close(f1);
if k=0 then write('Нет кругов, полностью лежащих в самом большом круге')
else
 begin
  writeln('Содержание файла F2');
  seek(f2,0);
  while not eof(f2) do
   begin
    read(f2,z);
    write('(',z.x:5:2,',',z.y:5:2,',',z.r:5:2,') ');
   end;
 end;
close(f2)
end.

Объяснение кода листинга программы

  1. Создаются две переменные типа krug - z и zmx, а также переменные n, i, imx, k, mx типа integer и файловые переменные f1 и f2.
  2. В цикле вводятся и записываются в файл F1 круги до тех пор, пока не будет введено указанное количество кругов.
  3. Выводится информация о содержимом файла F1.
  4. Находится максимальный круг по площади, его координаты сохраняются в переменной zmx.
  5. Файл F2 открывается для записи.
  6. В цикле читаются круги из файла F1 и проверяется условие на полное попадание в максимальный круг. Если условие выполняется, круг записывается в файл F2 и счетчик k увеличивается на единицу.
  7. Если в файле F2 нет кругов, выводится сообщение об отсутствии кругов, полностью лежащих в самом большом круге.
  8. В противном случае выводится информация о содержимом файла F2.
  9. Файлы F1 и F2 закрываются.

Оцени полезность:

9   голосов , оценка 3.889 из 5
Похожие ответы