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

Окружность и прямая - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Обнаружение USB устройств с последующим их безопасным извлечением http://www.cyberforum.ru/cpp-beginners/thread335438.html
Интересует вопрос об обнаружении съёмных накопителей (usb-flash), с последующим копированием на них и извлечением, прошу в гугл не посылать, т.к. объяснений кода от него не дождёшься, хотелось бы получить внятное разъяснение, помогите кто чем может :)
C++ Дана строка удалить все пробелы или просто присвоить в другую строку без пробелов Дана строка удалить все пробелы или просто присвоить в другую строку без пробелов http://www.cyberforum.ru/cpp-beginners/thread335431.html
C++ Изменение значения переменной во время исполнения
Задача: Преобразовать введенный с клавиатуры массив таким образом, чтобы в первой его половине располагались элементы , имевшие нечетный индекс, а во второй - четный. Код такой: #include <iostream> using namespace std; int main(int argc, char **argv) { int n; cout<<"Введите кол-во элементов массива "<<endl; cin>>n;
C++ Скорость функций с ссылками
Всем привет. Интересует способ организации функции для более быстрого передачи данных. Дана функция которая дополняет вектор битов нулями в конце, если количество бит не кратно некому числу. Вариант 1: Используются ссылки. private: void static add_bits(const std::vector <boost::uint8_t> & VectorInput, std::vector <boost::uint8_t> & VectorOutput,
C++ Решить систему алгебраических линейных неоднородных уравнени http://www.cyberforum.ru/cpp-beginners/thread335409.html
У меня есть система линейных уравнений. В ней 4000 уравнений. Киньте плиз код для её решения. Желательно, чтобы он был максимально быстрым.
C++ Английские и русские буквы. Здравствуйте! Подскажите пожалуйста, как в С отличить русские буквы от английских? Я думаю что надо оперировать с кодами букв, но как именно-не соображу. Добавлено через 18 минут /* * File: main.cpp * Author: alchemist * Больше свинок для науки! подробнее

Показать сообщение отдельно
-=ЮрА=-
Заблокирован
Автор FAQ
25.07.2011, 12:32     Окружность и прямая
Вот моё решение на С. Математические выкладки в миниатюре. Для решения как и говорил easybudda использую совместное решение уравнения прямой и круга методом подстановки и решаю итоговое квадратное уравнение x^2 + (kx+b)^2 = R^2. Вариантов ответов может быть 3
1 - D < 0 прямая и круг не пересекаются
2 - D == 0 прямая - касательная, точка пересечения одна
3 - 0 < D прямая пересекает круг
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#include <stdio.h>
#include <math.h>
 
float line(float x1, float x2, float y1, float y2, float x); 
 
int main()
{
    float x1,x2,y1,y2,x0,y0,r,X1,X2,Y1,Y2;
    printf("\tEnter parameters of line\r\n");
    printf("x1 = ");scanf("%g",&x1);
    printf("x2 = ");scanf("%g",&x2);
    printf("y1 = ");scanf("%g",&y1);
    printf("y2 = ");scanf("%g",&y2);
    printf("\tEnter parameters of cicule\r\n");
    printf("x0 = ");scanf("%g",&x0);
    printf("y0 = ");scanf("%g",&y0);
    printf("r  = ");scanf("%g",&r);
 
    float k = (y2 - y1)/(x2 - x1);
    float b = (y2*x1 - y1*x2)/(x1 - x2);
 
    float D = pow(2*b*k,2) + 4*(1 + pow(k,2))*(pow(r,2) - pow(b,2));
    if(0 <= D)
    {
        switch(int(D)){
        case 0:
            X1 = -2*b*k/(2*(1 + pow(k,2))*(pow(r,2) - pow(b,2)));
            Y1 = line(x1,x2,y1,y2,X1);
            printf("\tline is tangent line to circule\r\n");
            break;
        default:
            X1 = (-2*b*k - sqrt(D))/(2*(1 + pow(k,2))*(pow(r,2) - pow(b,2)));
            Y1 = line(x1,x2,y1,y2,X1);
            X2 = (-2*b*k + sqrt(D))/(2*(1 + pow(k,2))*(pow(r,2) - pow(b,2)));
            Y2 = line(x1,x2,y1,y2,X2);
            printf("\tline cross circle in two points\r\n");
            break;
        };
        printf("coord point of intersection P1(%lf;%lf)\r\n",X1,Y1);
        if(D != 0)
            printf("coord point of intersection P2(%.2f;%.2f)\r\n",X2,Y2);
    }
    else
        printf("line not cross circule\r\n");
    return 0;
}
 
float line(float x1, float x2, float y1, float y2, float x)
{
    float y = y1 + (y2 - y1)*(x - x1)/(x2 - x1);
    return y;
}
Миниатюры
Окружность и прямая   Окружность и прямая  
 
Текущее время: 01:02. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru