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

задача на пересечение - C++

Восстановить пароль Регистрация
 
stason4ikas
0 / 0 / 0
Регистрация: 31.05.2013
Сообщений: 30
16.09.2013, 15:01     задача на пересечение #1
В этой задаче необходимо определить, пересекается ли прямая с окружностью. я нахожу дискриминант и затем нужно записать условие, но как его писать не знаю, объясните пожалуйста

заранее спасибо

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
32
33
34
35
36
37
//---------------------------------------------------------------------------
 
#include <vcl.h>
#include <stdio.h>
#include <conio.h>
#pragma hdrstop
 
 
//---------------------------------------------------------------------------
 
#pragma argsused
int main(int argc, char* argv[])
{
int r,d,p,b,k;
printf("Vvedite radius  ");
scanf("%d",&r);
printf("Vvedite znacheniya k  ");
scanf("%d",&k);
printf("Vvedite znacheniya  b  ");
scanf("%d",&b);
d=4*(r*r*(1+(k*k))-(b*b));   
 
if (d<0);
printf("\n\nPryamaya and okruwnost` ne peresekautsya");
 
if (d>0);
printf("\n\nPryamaya and okruwnost` peresekautsya");
 
if (d==0);
printf("\n\nPryamaya and okruwnost` peresekautsya v 1 tochke");
 
 
getch();
        return 0;
 
}
//---------------------------------------------------------------------------
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.09.2013, 15:01     задача на пересечение
Посмотрите здесь:

C++ Пересечение фигур
Пересечение множеств C++
Задача на пересечение C++
Пересечение множеств C++
C++ Пересечение прямых
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Catstail
Модератор
 Аватар для Catstail
21452 / 10237 / 1667
Регистрация: 12.02.2012
Сообщений: 17,113
16.09.2013, 15:05     задача на пересечение #2
А где расположен центр окружности? Прямая задается в виде y=kx+b. А у окружности только радиус?
stason4ikas
0 / 0 / 0
Регистрация: 31.05.2013
Сообщений: 30
16.09.2013, 15:08  [ТС]     задача на пересечение #3
условие задачи:

Окружность на плоскости с центром в начале координат имеет радиус 1. Определить, пересекает ли прямая y=kx+b окружность или хотя бы касается один раз.
Значения k,b вводить в диалоге, иметь возможность повтоpного обpащения.

из математики я рассчитал формулу пересечения окружности и прямой:

d=4*(r*r*(1+(k*k))-(b*b));
Catstail
Модератор
 Аватар для Catstail
21452 / 10237 / 1667
Регистрация: 12.02.2012
Сообщений: 17,113
16.09.2013, 15:22     задача на пересечение #4
Цитата Сообщение от stason4ikas Посмотреть сообщение
с центром в начале координат имеет радиус 1
- тогда все понятно. Но ты чего-то напутал... Нужно найти расстояние от точки (0,0) до прямой. А дальше:

1) если оно = 1 -> касание;
2) если оно < 1 -> пересечение (2 точки)
3) иначе -> нет общих точек

Если прямая задана уравнением y=kx+b, то расстояние до (0,0) дается формулой:

d=abs(b)/√(k^2+1)
stason4ikas
0 / 0 / 0
Регистрация: 31.05.2013
Сообщений: 30
16.09.2013, 15:46  [ТС]     задача на пересечение #5
Хорошо я понял, спасибо.

но я так и не понял, как писать условие на языке С++
1) если оно = 1 -> касание;
2) если оно < 1 -> пересечение (2 точки)
3) иначе -> нет общих точек

пишем: if (d<1); а дальше у меня не получется
Catstail
Модератор
 Аватар для Catstail
21452 / 10237 / 1667
Регистрация: 12.02.2012
Сообщений: 17,113
16.09.2013, 16:11     задача на пересечение #6
C++
1
2
3
4
5
6
7
  if (d < 1.0) 
    cout << "Пересечение. 2 общих точки" << endl;
  else
    if (d > 1.00)
       cout << "Нет общих точек" << endl;
    else
       cout << "Касание. 1 общая точка" << endl;
stason4ikas
0 / 0 / 0
Регистрация: 31.05.2013
Сообщений: 30
16.09.2013, 16:20  [ТС]     задача на пересечение #7
в институте нас обучают С++ на Builder 6. и учат через scanf и printf, не через cin and cout

вроде задал библиотеку #include <iostream>

ошибку дает, как быть?
SatanaXIII
Супер-модератор
Эксперт С++
 Аватар для SatanaXIII
5548 / 2562 / 233
Регистрация: 01.11.2011
Сообщений: 6,332
Завершенные тесты: 1
16.09.2013, 16:25     задача на пересечение #8
Цитата Сообщение от stason4ikas Посмотреть сообщение
Builder 6
Цитата Сообщение от stason4ikas Посмотреть сообщение
#include <iostream>
Цитата Сообщение от stason4ikas Посмотреть сообщение
ошибку дает, как быть?
Вот так:
C++
1
#include <iostream.h>
Цитата Сообщение от stason4ikas Посмотреть сообщение
scanf и printf
Это си.
Цитата Сообщение от stason4ikas Посмотреть сообщение
cin and cout
А это си плюс плюс.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.09.2013, 17:37     задача на пересечение
Еще ссылки по теме:

C++ Задача "Пересечение прямых"
Работа с классами и пересечение их между собой (задача о городах и поездах) C++
C++ Пересечение треугольников

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

Или воспользуйтесь поиском по форуму:
Voivoid
 Аватар для Voivoid
580 / 256 / 12
Регистрация: 31.03.2013
Сообщений: 1,284
16.09.2013, 17:37     задача на пересечение #9
Лол, 2014 года на носу, а C++ builder 6 под сих пор в строю. Ну хоть спасибо, что не Turbo C++
Yandex
Объявления
16.09.2013, 17:37     задача на пересечение
Ответ Создать тему
Опции темы

Текущее время: 13:36. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru