Определить среднюю абсциссу и ординату,иначе распечатать номера точек,не попавших в заданный круг. - Turbo Pascal
Формулировка задачи:
Если все точки плоскости,заданные своими координатами,попадают в круг радиусом Р и центром в начале координат, определить их среднюю абсциссу и ординату,иначе распечатать номера точек,не попавших в заданный круг.
Надо написать программу с процедурами..всего 3 процедуры,но никак не могу собрать все!напишите полностью код.
Решение задачи: «Определить среднюю абсциссу и ординату,иначе распечатать номера точек,не попавших в заданный круг.»
textual
Листинг программы
uses crt; const nmax=20; type mas=array[1..nmax,1..2] of real; procedure Vvod(var a:mas; var n:byte); var i:byte; begin repeat write('Количество точек до ',nmax,' n='); readln(n); until n in [1..nmax]; for i:=1 to n do begin a[i,1]:=-20+50*random; a[i,2]:=-10+50*random; end; end; procedure Vyvod(a:mas;n:byte); var i:byte; begin writeln('Координаты:'); for i:=1 to n do write('(',a[i,1]:6:1,';',a[i,2]:6:1,') '); writeln end; function Vnutri(x,y,r:real):boolean; begin Vnutri:=x*x+y*y<=r*r; end; procedure Result(a:mas;n:byte;r:real; var xsr,ysr:real); var i,k:byte; begin k:=0; for i:=1 to n do if Vnutri(a[i,1],a[i,2],r) then k:=k+1; if k=n then begin writeln('Все точки внутри круга'); xsr:=0; ysr:=0; for i:=1 to n do begin xsr:=xsr+a[i,1]; ysr:=ysr+a[i,2]; end; writeln('Средняя абцисса точек=',xsr/n:0:2); writeln('Средняя ордината точек=',ysr/n:0:2); end else begin writeln('Не попали в круг следующие точки:'); for i:=1 to n do if not Vnutri(a[i,1],a[i,2],r) then writeln(i:2,' ',a[i,1]:6:1,';',a[i,2]:6:1); end; end; var a:mas; n:byte; r,xsr,ysr:real; begin clrscr; Vvod(a,n); Vyvod(a,n); write('Введите радиус круга r='); readln(r); Result(a,n,r,xsr,ysr); readln end.
Объяснение кода листинга программы
- В первой строке используется библиотека crt, которая предоставляет функции для работы с консолью.
- Константа nmax определяет максимальное количество точек, которое может быть введено пользователем.
- Тип mas представляет собой массив из 2 элементов типа real, то есть массив из 2 чисел с плавающей точкой.
- Функция Vvod считывает от пользователя количество точек (n), которые он хочет ввести, и сохраняет его в переменной n.
- Процесс ввода точек повторяется до тех пор, пока количество точек (n) не станет равным 0.
- Для каждой точки вводятся координаты (x,y) с помощью функции readln.
- Функция Vyvod выводит координаты точек на экран.
- Функция Vnutri проверяет, находится ли точка внутри заданного круга.
- Процесс вывода результатов начинается с проверки условия, что все точки находятся внутри круга.
- Если все точки находятся внутри круга, вычисляются средние значения координат (xsr,ysr).
- Если хотя бы одна точка не находится внутри круга, выводится сообщение о том, какие точки не попали в круг.
- В конце программы с помощью функции readln считывается радиус круга (r).
- Функция Result выводит результаты в зависимости от значения радиуса круга.
- Программа завершается после ввода любого символа.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д