Составьте программу определяющую лежит ли точка с указанными координатами внутри квадрата с углами

Даны координаты 2-х вершин некоторого квадрата, расположенных по диагонали, и точка. Определить , лежит ли точка внутри квадрата.

Код к задаче: «Определить, лежит ли точка внутри квадрата»

Листинг программы

uses crt; type point=record x,y:real; end; //функция принадлежности точки треугольнику function prin_trg(a,b,c,t:point):boolean; //функция удвоенной площади треугольника по координатам function plosh(a,b,c:point):real; begin plosh:=(a.x-c.x)*(b.y-c.y)-(b.x-c.x)*(a.y-c.y) end; var s1,s2,s3:real; begin s1:=plosh(t,a,b);//определяем площади 3х малых треугольников s2:=plosh(t,b,c); s3:=plosh(t,c,a); //если произведения площадей попарно больше 0, то точка внутри prin_trg:=(s1*s2>0) and (s2*s3>0) end; var a,b,c,d,z,v,vb,vd,t:point; begin writeln(‘Введите координаты первой вершины’); readln(a.x,a.y); writeln(‘Введите координаты противоположной вершины’); readln(c.x,c.y); writeln(‘Введите координаты точки’); readln(t.x,t.y); //найдем координаты остальных вершин квадрата z.x:=(a.x+c.x)/2;//координаты центра z.y:=(a.y+c.y)/2; v.x:=a.x-z.x;//вектор из центра к А v.y:=a.y-z.y; vb.x:=v.y; //вектор из центра к В vb.y:=-v.x; vd.x:=-v.y;//вектор из центра к D vd.y:=v.x; b.x:=z.x+vb.x;//координаты вершины В b.y:=z.y+vb.y; d.x:=z.x+vd.x;//координаты вершины D d.y:=z.y+vd.y; clrscr; writeln(‘Координаты вершин квадрата’); writeln(‘A(‘,a.x:0:2,’;’,a.y:0:2,’)’); writeln(‘B(‘,b.x:0:2,’;’,b.y:0:2,’)’); writeln(‘C(‘,c.x:0:2,’;’,c.y:0:2,’)’); writeln(‘D(‘,d.x:0:2,’;’,d.y:0:2,’)’); writeln(‘Координаты точки’); writeln(t.x:0:2,’;’,t.y:0:2); if prin_trg(a,b,c,t)or prin_trg(a,c,d,t) then write(‘Точка принадлежит квадрату’) else write(‘Точка не принадлежит квадрату’) end.

Источник: studassistent.ru

#1.6 Координаты в Автокаде. Построение по координатам

Простые задачи (1 балл)

1. Написать программу нахождения наибольшего целого числа из трех введенных с клавиатуры.

2. Составьте программу, проверяющую, что введенное число является четным или нечетным.

3. Составьте программу, проверяющую, что введенное число делится без остатка на 3

4. Составьте программу, определяющую, лежит ли точка с указанными координатами в круге радиуса R с центром в начале координат

5. Составьте программу, определяющую, лежит ли точка с указанными координатами внутри квадрата с углами (0,0) и (а1, b1).

6. В ЭВМ поступают результаты соревнований по плаванию для 3-х спортсменов. Составьте программу, которая выбирает лучший результат и выводит его на экран с сообщением, что это результат победителя заплыва

7. Составьте программу для вычисления числа дней в месяце по введенному номеру месяца.

8. Приём на работу идёт на конкурсной основе. Условия приёма требуют 20 лет рабочего стажа и возраста не более 42 лет. Определите, будет ли человек принят.

Читайте также:
Средства выявления целевых атак примеры программ

9.Проверьте, делится ли число А на В без остатка.

10. Вычислите и распечатайте, что больше: sin(A-3) или tg(A-10).

Графический метод решения задач линейного программирования | Высшая математика TutorOnline

11. Найти наименьшее из 4-х введенных с клавиатуры чисел.

Задачи посложнее (2 балла)

1. Ракета запускается с Земли со скоростью V(км.час) в направлении движения Земли по орбите вокруг Солнца. Составьте программу, определяющую результат запуска ракеты в зависимости от скорости V. Известно, что при V16,4 ракета покинет солнечную систему.

2. Даны круг и квадрат. Составьте программу, определяющую по введенным вами значениям длин стороны квадрата и радиуса круга, одно из утверждений «Круг может быть вписан в квадрат» или «Квадрат может быть вписан в круг».

3. Напишите программу, которая анализирует человека по возрасту и относит к одной из четырех групп: дошкольник, ученик, работник, пенсионер. Возраст человека вводится с клавиатуры.

4. К финалу конкурса лучшего по профессии «Специалист электронного офиса» были допущены трое: Иванов, Петров, Сидоров. Соревнования проходили в три тура. Иванов в первом туре набрал M 1 баллов, во втором – N 1, в третьем – P 1. Петров – соответственно M 2, N 2, P 2. Сидоров – M 3, N 3, P 3. Составьте программу, определяющую, сколько баллов набрал победитель, все данные считтываются с клавиатуры. Победитель определяется по победам в турах, общей сумме баллов, в противном случае место делится.

5. Напишите программу, которая по паролю будет определять степень доступности сотрудника к секретной информации в базе данных. Доступ к базе имеют только шесть человек, разбитых на три группы по степени доступа. Они имеют следующие пароли: (2балла)

  • 9583, 1747 — доступны модули базы А, Б, С
  • 3331, 7922 — доступны модули базы Б, С
  • 9455, 8997 — доступен модуль базы С

6. Составьте программу, реализующую эпизод применения компьютера в книжном магазине. Компьютер запрашивает стоимость книг и сумму денег, внесенную покупателем. Если сдачи не требуется, печатает на экране «Спасибо». Если денег внесено больше, то печатает «Возьмите сдачу» и указывает сумму сдачи. Если денег недостаточно, то печатает об этом сообщение и указывает размер недостающей суммы.

Читайте также:
Как установить иконку на программу

7. Составьте программу, которая по введенному вами K – числу грибов печатает фразу «Мы нашли в лесу K грибов», причем согласовывает окончание слова «гриб» с числом K . Количество грибов может быть любым целым числом: 1, 3, 34, 127 и т.д. Окончание фразы определяется значением последней цифры.

8. Составьте программу, которая для числа K (от 1 до 99), введенного вами, напечатает фразу «Мне K лет», где K – введенное число, при этом в нужных случаях слово «лет» заменяя на «год» или «года». Например, при K =70 «Мне 70 лет», при K =15 «Мне 15 лет», при K =23 «Мне 23 года», при K =31 «Мне 31 год».

9. Даны действительные числа a, b, c, d. Если ab>c>d, то числа оставить без изменения; в противном случае все числа заменяются их квадратами.

10. Вычислите площадь треугольника, стороны которого a, b, c.

11. Определелить количество знаков в натуральном числе от 0 до 1000, не прибегая к строковым переменным.

12. Решите уравнение ax=b.

Задачи на 3 балла

· На одной диагонали

· На одной вертикали

На одной горизонтали

2. Составьте программу вычисления суммы цифр введенного с клавиатуры любого натурального числа (до 128 знаков). Например, для числа 128 сумма цифр 11, для числа 345 сумма цифр 12.

3,4. Проверить делится ли введенное с клавиатуры натуральное число нацело на 11, 9.

5. Решите уравнение a|x|=b.

На «5» необходимо набрать 12 баллов

На «4» необходимо набрать 9 баллов

На «3» необходимо набрать 6 баллов

Источник: cogathina.ru

Как мне написать программу на C, чтобы проверить, лежит ли точка внутри квадрата с заданными конечными точками одной из его диагоналей

Я решал вопрос, изложенный выше, но слишком запутался с математическими уравнениями и переменными. Я начал с попытки найти координаты двух других точек, но я не смог решить уравнения, там было много переменных, и я запутался. Если бы это было завершено, я бы попытался проверить положение точки относительно сторон, но это также включало бы много переменных и путаницы. Хороший алгоритм может быть просто полезен. Спасибо!

user7099935 23 фев ’17 в 04:37 2017-02-23 04:37
2017-02-23 04:37

Читайте также:
Как восстановить корзину после очистки без программ

3 ответа

Вы можете найти две оставшиеся точки квадрата:

x1 = ? ; y1 = ? ; // First diagonal point x2 = ? ; y2 = ? ; // Second diagonal point xc = (x1 + x2)/2 ; yc = (y1 + y2)/2 ; // Center point xd = (x1 — x2)/2 ; yd = (y1 — y2)/2 ; // Half-diagonal x3 = xc — yd ; y3 = yc + xd; // Third corner x4 = xc + yd ; y4 = yc — xd; // Fourth corner

Имея четыре точки квадрата, вы можете проверить, находится ли данная точка внутри квадрата, тогда площадь четырех треугольников, как показано на рисунке ниже, будет равна площади квадрата.

user6720411 23 фев ’17 в 04:56 2017-02-23 04:56
2017-02-23 04:56

Давайте вершинами являются A и B, а точка — это P (случайно названная C на картинке). Найти векторы AB, AP, BP

AB.X = B.X — A.X AB.Y = B.Y — A.Y and so on

P лежит внутри квадрата, если точечные произведения неотрицательны

cA = AP x AB //(AP.X * AB.Y — AP.Y * AB.X) dA = AP dot AB //(AP.X * AB.X + AP.Y * AB.Y) cB = -(AB x BP) dB = -(AB dot BP)

и абсолютное значение перекрестных произведений меньше, чем точечные произведения

dA >= Abs(cA) dB >= Abs(cB)

(это эквивалентно проверке, лежат ли углы в диапазоне -Pi/4..Pi/4 )

user844416 23 фев ’17 в 05:21 2017-02-23 05:21
2017-02-23 05:21

Предположим, что ваша проблема 2D (как в 3D или ND, вам нужно больше информации). Я бы решил это так:

диагональ

    найти 2 недостающие вершины Итак, мы знаем A,B и хочу C,D :

M = (A+B)/2 v1 = B-M

чтобы получить v2 мы можем использовать тот факт, что в 2D векторах (x,y) а также (y,-x) перпендикулярны и одинакового размера так:

v2 = (v1y,-v2x)
В остальном все просто:
C = M — v2 D = M + v2

базисные векторы

вычислить 2 ребра базисных векторов

U = C-A V = D-A

точка

использовать точечное произведение для проверки внутреннего диапазона

dot(I,J) = (I.J) = (Ix*Jx) + (Iy*Jy)

Дает вам перпендикулярную проекцию I в J (если оба вектора едины) или наоборот, так что мы можем использовать его для обнаружения точки P находится внутри квадрата:

W = P-A tu = (U.W) / (|U|*|W|) tv = (V.W) / (|V|*|W|) if ((tu>=0.0)(tu<=1.0)(tv>=0.0)(tv<=1.0)) return inside; else return outside;

Просто чтобы быть полным abs значение вектора вычисляется так:

abs(I) = |I| = sqrt ( Ix*Ix + Iy*Iy )

Источник: stackru.com

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru