Даны числа x1,y,x2,y2,x3,y3.Определите лежит ли точка (x1,y1) внутри или вне прямоугольника, стороны которого паралельны осям ко
Даны числа x1,y,x2,y2,x3,y3.Определите лежит ли точка (x1,y1) внутри или вне прямоугольника, стороны которого паралельны осям кординат,а противолежащие вершины имеют координаты (x2,y2,) и (x3,y3)
Заметим, что точка лежит внутри прямоугольника, если min(x2, x3) < x1 < max(x2, x3) и min(y2, y3) < y1 < max(y2, y3) (см. рисунок). Поэтому поступим так: сначала переставим x2 и x3, чтобы x2 стало меньше x3, потом повторим с y2 и y3, чтобы было y2 < y3. Затем можно проверять, что x2 < x1 < x3 и y2 < y1 < y3. Точка попадёт на границу, если x1 = x2 или x3, а y1 = y2 или y3. Если оба условия не выполнены, то точка лежит вне прямоугольника. Код (Паскаль): var x1, y1, x2, y2, x3, y3, temp: real;
begin write('Координаты точки: '); readln(x1, y1); write('Координаты первой вершины: '); readln(x2, y2); write('Координаты второй вершины: '); readln(x3, y3); if x2 > x3 then begin temp := x2; x2 := x3; x3 := temp; end; if y2 > y3 then begin temp := y2; y2 := y3; y3 := temp; end;
if (x2 < x1) and (x1 < x3) and (y2 < y1) and (y1 < y3) then writeln('Точка внутри прямоугольника') else if ((x1 = x2) or (x1 = x3)) and ((y1 = y2) or (y1 = y3)) then writeln('Точка на границе прямоугольника') else writeln('Точка вне прямоугольника'); end.
Можно заменить проверки на такие: если min(x2, x3) < x1 < max(x2, x3), то среди разностей x1 - x2 и x1 - x3 одна положительная, а другая отрицательная. Тогда (x1 - x2)(x1 - x3) < 0. Следовательно, можно проверить только, что (x1 - x2)(x1 - x3) < 0 и (y1 - y2)(y1 - y3) < 0. В случае, когда точка лежит на границе, оба произведения равны нулю. В моей программе произведения записаны в переменные x1 и y1. Код (Паскаль): var x1, y1, x2, y2, x3, y3: real;
if (x1 < 0) and (y1 < 0) then writeln('Точка внутри прямоугольника') else if (x1 = 0) and (y1 = 0) then writeln('Точка на границе прямоугольника') else writeln('Точка вне прямоугольника'); end.
*** 1 *** 1. Определяем объем файла, необходимого для звучания в течении 1 сек. Kсек=7500 / 10 = 750 (Кбайт) 2. Поскольку файл стереофонический, то он использует два звуковых канала, поэтому объем k1 следует уменьшить вдвое, получая объем, занимаемый одним каналом. k=Kсек / 2 = 750 / 2 = 375 (Кбайт) или 375 х 1024 = 384000 (байт) 2. Глубина звука 32 бита - это 32 / 8 = 4 байта. m=4. 3. Количество отсчетов на канал в секунду составит k / m = 384000 / 4 = 96000. Это соответствует частоте дискретизации 96 000 Гц или 96 Кгц.
*** 2 *** Всего имеется 30х30=900 точек, которые занимают 1012.5 байт. Тогда одна точка занимает 1012.5 / 900 = 1.125 (байта) или 1.125 х 8 = 9 (бит). В девяти битах можно разместить палитру, количество цветов в которой составляет два в девятой степени (считая, что черный - это тоже цвет). - используется 512 цветов.
Var a:array [1..10] of integer; i,n:integer; begin n:=0; for i:=1 to 10 do begin write ('Введите ',i,' число: '); readln (a[i]); n:=n+a[i]; end; WRITELN; write ('Сумма элементов в массиве = ',n); end.