Задача.
Треугольник и круги.
Лежит ли заданный на плоскости треугольник АВС в области пересечения заданных кругов:
[latex](x-a1)^2+(y-b1)^2<r1^2[/latex] , и [latex](x-a2)^2+(y-b2)^2<r2^2[/latex] ?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
#include <iostream> #include <math.h> using namespace std; int main(){ int a1, b1, r1; int a2, b2, r2; int ax, bx, cx; int ay, by, cy; cin >> a1 >> b1 >> r1; cin >> a2 >> b2 >> r2; cin >> ax >> bx >> cx; cin >> ay >> by >> cy; if ( ((ax-a1)*(ax-a1)+(ay-b1)*(ay-b1)<r1*r1)&& ((bx-a1)*(bx-a1)+(by-b1)*(by-b1)<r1*r1)&& ((cx-a1)*(cx-a1)+(cy-b1)*(cy-b1)<r1*r1)&& ((ax-a2)*(ax-a2)+(ay-b2)*(ay-b2)<r2*r2)&& ((bx-a2)*(bx-a2)+(by-b2)*(by-b2)<r2*r2)&& ((cx-a2)*(cx-a2)+(cy-b2)*(cy-b2)<r2*r2)) { printf ("На пересечении"); } else { printf ("Не на пересечении"); } return 0; } |
Код программы на Java:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
import java.util.*; import java.lang.*; import java.io.*; class Ideone { public static void main (String[] args) { Scanner in=new Scanner(System.in); int a1=in.nextInt(); int b1=in.nextInt(); int r1=in.nextInt(); int a2=in.nextInt(); int b2=in.nextInt(); int r2=in.nextInt(); int ax=in.nextInt(); int bx=in.nextInt(); int cx=in.nextInt(); int ay=in.nextInt(); int by=in.nextInt(); int cy=in.nextInt(); if ( ((ax-a1)*(ax-a1)+(ay-b1)*(ay-b1)<r1*r1)&& ((bx-a1)*(bx-a1)+(by-b1)*(by-b1)<r1*r1)&& ((cx-a1)*(cx-a1)+(cy-b1)*(cy-b1)<r1*r1)&& ((ax-a2)*(ax-a2)+(ay-b2)*(ay-b2)<r2*r2)&& ((bx-a2)*(bx-a2)+(by-b2)*(by-b2)<r2*r2)&& ((cx-a2)*(cx-a2)+(cy-b2)*(cy-b2)<r2*r2)) { System.out.printf("На пересечении"); } else { System.out.printf("Не на пересечении"); } } } |
Ссылка на программу на Java:http: //ideone.com/QZ7RB1
Решение:
Поскольку все фигуры выпуклые достаточно проверить вершины треугольника. Подставляем координаты всех трёх вершин в оба неравенства. Если все условия удовлетворены, то лежит. Если хоть одно условие не выполняется, то не лежит.
Тест
a1 | b1 | r1 | a2 | b2 | r2 | ax | bx | cx | ay | by | cy | Принадлежит? |
1 | 2 | 3 | 3 | 4 | 5 | 6 | 7 | 8 | 6 | 7 | 4 | нет |
1 | 2 | 15 | 3 | 4 | 12 | 6 | 7 | 8 | 6 | 7 | 4 | да |
7 | 5 | 10 | 4 | 6 | 16 | 6 | 7 | 3 | 5 | 6 | 7 | да |
7 | 5 | 5 | 4 | 6 | 3 | 6 | 7 | 3 | 5 | 6 | 7 | нет |
Коды latex нужно вставлять не картинками, а [latex][/latex].
В scanf не хватает ещё 3 %d.
Нет меток.
Давайте от простого к сложному.
— Не указаны метки (ключевые слова)
— В тексте программы отсутствуют отступы. Куда они сбежали? Я же их днём видел!
— Формулы не видны. Причина — Вы их не вставляли, а вставили их изображения. На сайте об этом уже раз 5-6 в разных местах написано. Во всех инструкциях и ответах. Пишу прямо пример по вашему тексту: «радиус большего круга [latex]R_b[/latex] и радиус меньшего круга [latex]R_s[/latex]»
— Даже один математический символ или переменная должны быть в laTeX. См. пример выше.
— Катя, Вы вообще задачу не поняли. Какие площади и какие высоты? Что, все маленькие треугольники принадлежат всем большим окружностям? Вы же так не думаете на самом деле!
Я попробую описать Вам условие задачи подробнее чем в задачнике.
Дано:
1. Координаты вершин треугольника (6 чисел, читаются из входного потока)
2. Координаты центра и радиус двух окружностей (две тройки чисел, читаются из входного потока)
Определить: Принадлежат ли все точки треугольника одновременно обоим окружностям. Т.е. лежит ли треугольник внутри пересечения окружностей.
Решение: Поскольку все фигуры выпуклые достаточно проверить вершины треугольника. Подставляем координаты всех трёх вершин в оба неравенства. Если все условия удовлетворены, то лежит. Если хоть одно условие не выполняется, то не лежит.
Если не очень понятно, нарисуйте картинку.
— Где метки?
— Вы пишите «Как мы видим, что достаточно подставить более большие значения r1 и r2 чтобы проверить оба случая.» Я попытался поправить эту фразу. Получилось так: «Мы видим, что достаточно подставить бо́льшие значения r1 и r2 чтобы проверить оба случая».
Что эта фраза означает?
Пожалуй, можно обойтись и без нее.
Зачтено 🙂
Засчитана Java версия. Только старайтесь отступы чуть аккуратнее расставлять.