Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
СПП
25 / 25 / 2
Регистрация: 15.12.2012
Сообщений: 71
#1

Геометрическая фигура круг - C++

25.01.2013, 10:58. Просмотров 713. Ответов 5
Метки нет (Все метки)

Здравствуйте, столкнулся с такой проблемой,
задание такое, дан круг и точка, выявить, лежит ли точка в круге, на окружности, или вообще нележит
вот мой код
C++
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
#include <iostream>
#include <cstdlib>
#include <clocale>
 
void krug(double cx , double cy, double R, double tx, double ty){
// НЕ ЛЕЖИТ --------------------------
    if(cx+R<tx && cy+R<ty) // например: х(1)+R(3)<tx(5) -> нележит
        std::cout << "Точка нележит на плоскости (1)" << std::endl;
    else if(tx<0){
        if(cx-R>tx && cy-R>ty) // например: х(1)-R(3)<tx(-4) -> нележит т.к. "-2 > -4"
            std::cout << "Точка нележит на плоскости (2)" << std::endl;
    }
// ЛЕЖИТ НА ОКРУЖНОСТИ----------------
    else if(cx+R==tx && cy+R==ty || cx+R==tx || cy+R==ty) // например: x(1)+R(3)=tx(4) -> лежит на окружности
        std::cout << "Точка лежит на окружности (3)" << std::endl;
// ЛЕЖИТ  ----------------------------
    else // например: х(1)+R(3)>tx(3) -> лежит
        std::cout << "Точка лежит внутри круга (4)" << std::endl;
}
int main(){setlocale(LC_ALL,"Rus");
    double cx, cy, R; // -> круг-данные
    std::cout << "Введите х-круга: ";std::cin >> cx;
    std::cout << "Введите у-круга: ";std::cin >> cy;
    std::cout << "введите R-круга: ";std::cin >> R;
    double tx, ty; // точка-данные
    std::cout << "Введите х-точки: ";std::cin >> tx;
    std::cout << "Введите у-точки: ";std::cin >> ty;
    krug(cx,cy,R,tx,ty);
system("pause");
return 0;
}
Код правильный, работает без ошибок, компилятор ни на что не ругается
Но когда я тестил программу. выявил такую проблему, что я немогу её исправить
Я покажу на картинке
Геометрическая фигура круг
я ввожу коортината круга: х=1, у=1, R=1, точки: х=2, у=2
и мне компилятор выдаёт что точка лежит на окружности, а должно выводить что оно нележит
я незнаю в чём проблема ведь R=1

Помогите пожалуйста, как мне правильно построить круг.

ЗЫ. вот эти "Точка нележит на плоскости (1)" -> (1),(2), (3), (4) , я написал чтобы мне легче было писать циклы if,else, тоесть когда я тестил я проверял все три варианта, и смотрел как я в двухмерно понимаю расположение, и как понимает компьютер, на них можно внимания необращать
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.01.2013, 10:58     Геометрическая фигура круг
Посмотрите здесь:

Геометрическая фигура - C++
Как , если дано уравнение двумя переменными, изобразить фигуру? Напишите код плиз, для уравнения y+x&lt;3(|y|+x^2) Добавлено через 45...

Геометрическая фигура и рейсы самолетов - C++
Всем доброго времени суток! Имеется следующая пара задачек по С++, т.к. я с ним совершенно не дружу, надеюсь на Вашу помощь. Заранее...

Наследование и композиция: фигура, круг - C++
Получил вот такое задание Наследование и композиция. Фигура, координата, цвет, линия, фон, заголовок, круг. Общее: 1....

Написать класс "Геометрическая фигура" - C++
Помогите!! Нужно написать класс фигура ( геом. ) от него уноследовать прямоугольник. Подсчет площади и периметра. Продемонстрировать...

Класс "Геометрическая фигура" - C++
Здравствуйте! Необходимо создать класс Геометрическая фигура,от него производные классы прямоугольник и пятиугольник, с методами...

Родительский класс "Геометрическая фигура", потомок "Конус" - C++
Всем привет. Впервые сюда обращаюсь за помощью. В связи с тем, что сегодня сообщили, что мне нужно сдать отчёт по проге, я чисто...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Stanis
52 / 41 / 8
Регистрация: 16.12.2012
Сообщений: 144
25.01.2013, 11:48     Геометрическая фигура круг #2
Ты слишком сложно написал , для такой простой программы.
Вот рабочая
C++
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
#include <math.h>
#include <cstdlib>
#include <iostream>
using namespace std;
 
int main()
{
    setlocale(0,"");
    double x1=0,y1=0,x2=0,y2=0,R=0,length=0;
    cout<<"Введите x круга . ";cin>>x1;
    cout<<endl<<"Введите y круга . ";cin>>y1;
    cout<<endl<<"Введите R круга . ";cin>>R;
    cout<<endl<<"Введите x точки . ";cin>>x2;
    cout<<endl<<"Введите y точки . ";cin>>y2;
    length=pow(pow((x2-x1),2)+pow((y2-y1),2),0.5);
    cout<<"length"<<length<<endl;
    if(length>R)
    {cout<<endl<<"Точка вне круга"<<endl;}
    else if(length==R)
    {cout<<endl<<"Точка на окружности"<<endl;}
    else
    {cout<<endl<<"Точка внутри круга"<<endl;}
    system("pause");
    return 0;
}
Pure
228 / 49 / 2
Регистрация: 13.03.2012
Сообщений: 453
Записей в блоге: 7
25.01.2013, 11:58     Геометрическая фигура круг #3
предлагаю иной метод подсчета.

1.необходимо узнать координаты центра окружности
2.сравнить расстояние до данной точки от центра окружности, с радиусом.
Если оно больше радиуса - точка не лежит на окружности - как раз это видно на картинке.

Но для этого нужна более мелкая шкала деления минимум.
Далее расчет. Поскольку, как видно из твоего рисунка, при помощи центра окружности и нашей точки мы всегда сможем составить квадрат. Соотвественно диагональ квадрата это и будет расстояние до нашей точки.
Как найти диагональ? Поскольку у нас квадрат, то диагональ делит его на 2 прямоугольных треугольника.
Это позволяет нам использовать следующее
В прямоугольном треугольнике квадрат длины гипотенузы равен сумме квадратов длин катетов.

Длина гипотенузы это и есть расстояние от центра до точки, сравниваем с радиусом и принимаем решение.

Ну а по твоей схеме да- точка будет лежать на окружности
СПП
25 / 25 / 2
Регистрация: 15.12.2012
Сообщений: 71
25.01.2013, 13:39  [ТС]     Геометрическая фигура круг #4
Цитата Сообщение от Stanis Посмотреть сообщение
C++
1
length=pow(pow((x2-x1),2)+pow((y2-y1),2),0.5);
Я так понял что мы ищем длину от центра-круга до точки
длина = координата х2(у2) отнимаем х1(у1), находим что??? и эти числа возводим в степень 2
потом эти числа х3 и у3 возводим в степнь = 0,5
Вы можете мне поподробнее написать, что к чему? и зачем так делать?
я понял что мы ищем длину, но каким принципом
я бы хотел бы услышать, как правильно прочитать этот код

Цитата Сообщение от Pure Посмотреть сообщение
предлагаю иной метод подсчета.
1.необходимо узнать координаты центра окружности
2.сравнить расстояние до данной точки от центра окружности, с радиусом.
Если оно больше радиуса - точка не лежит на окружности - как раз это видно на картинке.
Но для этого нужна более мелкая шкала деления минимум.
Далее расчет. Поскольку, как видно из твоего рисунка, при помощи центра окружности и нашей точки мы всегда сможем составить квадрат. Соотвественно диагональ квадрата это и будет расстояние до нашей точки.
Как найти диагональ? Поскольку у нас квадрат, то диагональ делит его на 2 прямоугольных треугольника.
Это позволяет нам использовать следующее
В прямоугольном треугольнике квадрат длины гипотенузы равен сумме квадратов длин катетов.
Длина гипотенузы это и есть расстояние от центра до точки, сравниваем с радиусом и принимаем решение.
Ну а по твоей схеме да- точка будет лежать на окружности
Значит х-точки = 1катит, у-точки = 2катит
А если точка имеет координаты [0;1] или [1;0]
Или в реализацию этой проблемы, мне нужно будет оставить часть написанного моего кода
Stanis
52 / 41 / 8
Регистрация: 16.12.2012
Сообщений: 144
25.01.2013, 14:30     Геометрическая фигура круг #5
Цитата Сообщение от СПП Посмотреть сообщение
Я так понял что мы ищем длину от центра-круга до точки
длина = координата х2(у2) отнимаем х1(у1), находим что??? и эти числа возводим в степень 2
потом эти числа х3 и у3 возводим в степнь = 0,5
Вы можете мне поподробнее написать, что к чему? и зачем так делать?
я понял что мы ищем длину, но каким принципом
я бы хотел бы услышать, как правильно прочитать этот код
Потому что по такой формуле находится расстояние между двумя точками на плоскости
d-расстояние , d=((x2-x1)2+(y2-y1)2)(1/2)
Нашли расстояние от центра окружности до нашей точки и затем сравниваем его с радиусом.
Если больше радиуса , то за окружностью если меньше то в окружности если равны то наша
точка лежит на нашей окружности.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.01.2013, 16:13     Геометрическая фигура круг
Еще ссылки по теме:

геометрическая программа (С++) - C++
Добрый день ув. форумчане от студентов первого курса. Недавно преподаватель дал задание по программированию, но его толком никто не понял,...

Геометрическая прогрессия - C++
Задача: Дано N десятоков целых чисел. Определить, сколько из них могут составлять геометрическую прогрессию. Проверку оформить в виде...

геометрическая прогрессия - C++
Составить программу, которая считает члены геометрической прогрессии (N), начальный элемент 2 а квоциент 0,2! Показывает 4 знака после...

Геометрическая прогрессия - C++
Геометрическая прогрессия У вас есть действительное число и натуральное число n. Вычислить 1 +a + a2 +...+ без использования формулы...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
СПП
25 / 25 / 2
Регистрация: 15.12.2012
Сообщений: 71
25.01.2013, 16:13  [ТС]     Геометрическая фигура круг #6
Цитата Сообщение от Stanis Посмотреть сообщение
Потому что по такой формуле находится расстояние между двумя точками на плоскости
d-расстояние , d=((x2-x1)2+(y2-y1)2)(1/2)
я понил что по такой формуле находится, я вот непойму как это выявили
Вы сами видели, как я рассуждал, чтобы сделать задание.
Мне бы хотелось услышать то, чтобы я этот принцип запомнил не ввиде програмного кода, а ввиде человеческой логике и смог позже применить его в других аналогичных программах без чей-то помощи.
Yandex
Объявления
25.01.2013, 16:13     Геометрическая фигура круг
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru