В текстовом файле хранятся координаты n точек ** плоскости. Составить программу для:...

0 голосов
52 просмотров

В текстовом файле хранятся координаты n точек на плоскости.

Составить программу для:

подсчета количества точек, попадающих в заданную область;

формирования массива из координат точек, попадающих в заданную область;

полученный массив дописать в созданный ранее текстовый файл.
(на паскале)


image

Информатика (68 баллов) | 52 просмотров
0

Почему в файле такие странные координаты

Дан 1 ответ
0 голосов
Правильный ответ

Запишем каноническое уравнение эллипса:
\displaystyle \frac{x^2}{a^2}+ \frac{y^2}{b^2} =1; \ \frac{x^2}{4}+ \frac{y^2}{1} =1; \ x^2=4(1-y^2)
Теперь составим критерий принадлежности точки А(x,y) заштрихованной области:
\begin {cases} x^2\leq 4(1-y^2) \\ \left | x \right | \geq 1 \end {cases} \to \qquad (x^2\leq 4(1-y^2)) \ \land \ (\left | x \right | \geq 1)

Вспомогательная программа, создающая файл:
const
  n=50;
var
  i:integer;
  f:Text;
begin
  Assign(f,'xy.txt');
  Rewrite(f);
  Randomize;
  for i:=1 to n do Writeln(f,6*Random-3,' ',5*Random-2.5);
  Close(f);
end.

Программа, выполняющая задание:
const
  n=50;
var
  x,y:real;
  i,k:integer;
  a:array[1..n,1..2] of real;
  f:Text;
begin
  Assign(f,'xy.txt');
  Reset(f);
  k:=0;
  Writeln('Отобранные точки');
  while not Eof(f) do begin
    Readln(f,x,y);
    if (sqr(x)<=4*(1-sqr(y))) and (abs(x)>=1) then
    begin
      Writeln(x,' ',y);
      Inc(k); a[k,1]:=x; a[k,2]:=y
    end
  end;
  Writeln('Количество точек = ',k);
  Close(f);
  Append(f);
  for i:=1 to k do Writeln(f,a[i,1],' ',a[i,2]);
  Close(f)
end.




(142k баллов)
0

Почему в файле такие странные координаты

0

Потому что они сгенерированы от датчика случайных чисел. В конкретной реализации у меня не хватило фантазии и желания руками писать 50 пар значений из диапазонов [-5;5] и [-3;3]

0

Можно было бы их округлить до 2-3 значащих цифр, но на работе программы это не сказывается, поэтому не стал.