Определить, попадают ли точки с заданными координатами в заданную область - Turbo Pascal

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

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

PASCAL С клавиатуры вводятся: N – количество пробных точек; Xi – абсцисса пробной точки; Yi – ордината пробной точки; Ri – параметр. Результаты вычислений вывести в виде таблицы, состоящей из трех столбцов: значений координат пробных точек (Xi и Yi) и соответствующих им исходов опыта («Попала» или «Не попала»). Таблица должна иметь заголовочную строку. Должна быть реализована возможность многократного выполнения программы без ее перезапуска. В программе необходимо использовать условный оператор и оператор цикла (с предусловием, либо с постусловием, либо с параметром). Необходимо обеспечить пользовательский интерфейс (вывод на экран поясняющих сообщений). Требования к входным и выходным данным: – диапазон значений Xi, Yi, Ri соответствует области определения площади фигуры на графике (см. вариант задания) и может принимать как целые, так и вещественные значения; – формат вывода таблицы значений аргумента и функции следующий: X Y Попадание точки .. .. Да(Нет) (Ссылка на сторонний ресурс удалена, контент зангружен на форум)

Решение задачи: «Определить, попадают ли точки с заданными координатами в заданную область»

textual
Листинг программы
type probe = record x, y, r: double end;
const m = 100;
      g = '+------------------------+------------------------+-----+';
      no_yes: array [boolean] of string[3] = ('No ', 'Yes');
var series: array [1..m] of probe;
    n, num: integer;
    s: string;
begin
  repeat
    repeat
      write('Number of tests in series [1..', m, ']: ');
      readln(n)
    until n in [1..m];
    for num := 1 to n do with series[num] do
      begin
        writeln('Test #', num, ':');
        write('X[', num, '] = ');
        readln(x);
        write('Y[', num, '] = ');
        readln(y);
        repeat
          write('R[', num, '] = ');
          readln(r);
          if r <= 0 then writeln('Radius must be > 0, reenter')
        until r > 0
      end;
    writeln('Tests results:');
    writeln(g);
    writeln('|           X            |            Y           | Hit |');
    writeln(g);
    for num := 1 to n do with series[num] do writeln('| ', x, ' | ', y, ' | ',
      no_yes[(x * y >= 0) and (abs(y) <= abs(x)) and (sqr(abs(x) - r) + sqr(abs(y) - r) <= r * r)], ' |');
    writeln(g);
    write('Enter one more series? ');
    readln(s)
  until (s = 'n') or (s = 'N')
end.

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

  1. Создается тип данных probe, который содержит три поля: x, y и r типа double.
  2. Задается константа m равная 100.
  3. Создается массив series типа array[1..m] of probe.
  4. Создается переменная n типа integer и инициализируется значением 1.
  5. Создается переменная num типа integer.
  6. Создается переменная s типа string.
  7. В цикле повторяется до тех пор, пока n меньше или равно m.
  8. Внутри цикла для каждого теста в серии выводится информация о его номере и координатах X и Y.
  9. Проверяется, что радиус r больше нуля. Если радиус меньше нуля, программа просит пользователя ввести корректное значение.
  10. Выводится результат теста, включая информацию о том, был ли он успешным или нет.
  11. Выводится запрос на ввод еще одной серии тестов.
  12. Программа продолжает запрашивать еще серии тестов до тех пор, пока пользователь не введет n или N.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

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

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