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

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

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

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

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

    question img

Ответы 4

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

      cline
    • 5 лет назад
    • 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 ight | \geq 1 \end {cases} \to \qquad (x^2\leq 4(1-y^2)) \ \land \ (\left | x ight | \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.
  • Добавить свой ответ

Еще вопросы

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years