Окружность

Тема в разделе "C/C++/C#", создана пользователем -, 18 фев 2012.

  1. Гость

    Нужно написать программу на языке С++ к задаче:

    окружность на плоскости может быть задана координатами x,y ее центра и радиусом r.Пусть даны соответствующие характеристики нескольких окружностей:x1,y1,r1,x2,y2,r2.....xn,yn,rn.Определить,имеются ли среди этих окружностей три попарно пересекающихся.
     
  2. Гость

    помогите написать эту программу
     
  3. Whatka

    Whatka Well-Known Member

    Регистрация:
    9 окт 2011
    Сообщения:
    433
    Симпатии:
    4
    за тебя весь код никто писать не будет (тем более бесплатно)
    определись что значит помощь в твоём понимании
     
  4. Гость

    я ваще не понимаю просто(((а ты знаешь как?
     
  5. Whatka

    Whatka Well-Known Member

    Регистрация:
    9 окт 2011
    Сообщения:
    433
    Симпатии:
    4
    приблительно

    берёшь первую окружность и смотришь пересекается ли с
    другими окружностями
    нет?-> вторую окружность и т.д.
    да с одной?- > берёшь вторую окружность и т.д.
    да с двумя и более?->cмотришь пересекаются ли между собой эти окружности

    условие пересечения 2 окружностей - сумма радиусов меньше расстояния между центрами
     
  6. Гость

    помоги очень прошу)))дорого просишь?нам лекции не объясняют(
     
  7. Гость

    В чем именно проблема? И что не объясняют на лекциях?

    Как определить пересекаются ли окружности уже рассказали выше.

    Если нужно организовать ввод данных, см. std::cin и std::cout (я так понимаю нужна консольная программа).

    Все остальное, что нужно, это организовать цикл по всем заданным окружностям, про циклы можно прочитать в любой книжке по С++.
     
  8. Гость

    проблема,что я не понимаю
     
  9. Гость

    Моя логика при разработке была бы следующей:

    1. С тремя переменными x, y и R не очень удобно работать. Лучше создать для окружности свой тип данных, например так:
    Код (C++):
    struct Orc
    {
    double x;
    double y;
    double R;
    };
    2. Нужно как-то проверить пересекаются две окружности или нет. Пишем функцию
    Код (C++):
    bool isCross(Orc a, Orc b)
    {
    double distance = std::sqrt((a.x - b.x) * (a.x - b.x) + (a.y - b.y) * (a.y - b.y));
    return (a.R + b.R) > distance;
    }
    (нужно еще добавить сюда проверку, что одна окружность не вложена во вторую без пересечения)

    3. Пишем проверку попарного пересечения трех окружностей
    Код (C++):
    bool isCross(Orc a, Orc b, Orc c)
    {
    return isCross(a, b) && isCross(b, c) && isCross(a, c);
    }
    4. Используем все что сделали)))

    Код (C++):
    void main(void)
    {
    const int n = 5;
    Orc orcs[n];

    // заполнение массива окружностей

    // проверка тройками окружностей на взаимное пересечение
    for (int i = 0; i < n; i++)
    for(int j = i + 1; j < n; j++)
    for(int k = j + 1; k < n; k++)
    if (isCross(orcs[i], orcs[j], orcs[k]))
    {
    //делаем, что нужно когда найдена тройка попарно пересекающихся окружностей
    }
    }
     
  10. Гость

    не запускает,пишет
    1>c:\users\user\documents\visual studio 2008\projects\окружности\окружности\окружности.cpp(24) : error C2039: sqrt: не является членом "std"
     
  11. Гость

    Нужно подключить заголовочный файл cmath

    По стандартным (namespace std) функциям можно смотреть здесь.
     
Загрузка...
Похожие Темы - Окружность
  1. natasha777
    Ответов:
    5
    Просмотров:
    2.178

Поделиться этой страницей