Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
vova-33333
1 / 1 / 0
Регистрация: 16.08.2014
Сообщений: 10
#1

Найти точки пересечения параболы и прямой - C++

16.08.2014, 19:25. Просмотров 1152. Ответов 6
Метки нет (Все метки)

Не понимаю почему программа работает некоректно.
Код компилируется и работает, но программа выдает неверный результат.
Собственно сам код:
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
53
54
55
56
57
58
59
60
61
62
// 007аТочки пересечения линий.cpp: определяет точку входа для консольного приложения.
// y = ax^2 + bx + c и y = dx + k
 
#include "stdafx.h"
#include <iostream>
#include <cmath>
#include <locale>
 
using namespace std;
 
int main(int argc, char* argv[])
{
    setlocale(LC_ALL,"");
 
    float a, b, c, d, k, x1, x2, y1, y2;
    float A, B, C, sqrtD;
 
    cout << "Первое уравнение: y = ax^2 + bx + c \nВведите a, b, c\n" << "a= "; cin >> a; cout << endl;
    cout <<"b= "; cin >> b; cout << endl;
    cout << "c= "; cin >> c; cout << endl;
 
    cout << "Второе уравнение: y = dx + k \nВведите d, k\n" << "d= "; cin >> d; cout << endl;
    cout << "k= "; cin >> k; cout << endl;
 
    //(ax^2 + bx + c)=(dx + k)
    // ax^2 + (b-d)x + (c-k) = 0
 
    A = a;
    B = (b-d);
    C = (c-k);
 
    sqrtD = sqrt((B*B)- (4 * A * C));
 
    if (sqrtD>0)
    {
 
    x1 = (-B + sqrtD) / (2 * A);
    x2 = (-B - sqrtD) / (2 * A);
    y1 = d * x1 + k;
    y2 = d * x2 + k;
 
    cout << "Функции пересекаются в точках: " << "[" << x1 << ";" << y1 << "]" << endl;
    cout << \n" << "[" << x2 << ";" << y2 << "]" << endl;
 
    }
    else
    {
        if (sqrtD==0)
        {
            x1 = -B / (2 * A);
            y1 = d * x1 + k;
 
            cout << "Функции пересекаются в точке: " << "[" << x1 << ";" << y1 << "]" << endl;
        }
        else
        {
            cout << "Функции не пересекаются" << endl;
        }
    }
    system("pause");
    return 0;
}
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.08.2014, 19:25
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Найти точки пересечения параболы и прямой (C++):

Найти точки пересечения прямой с окружностью - C++
Даны координаты центра (x,y) и радиус R, и коэффициенты А, В и С нормального уравнения прямой. Найти точки пересечения прямой с...

Точки пересечения окружности и прямой - C++
Необходимо создать программу которая находит точки пересечения окружности и прямой. Причем я задаю радиус сам, и координаты центра фигуры,...

Вычислить точки пересечения плоскости и прямой С++ - C++
Помогите пожалуйста с кодом для задачи Вычислить точки пересечения плоскости AX+BY+CZ+D=0 и прямой (x-x1)/n = (y-y1)/m+(z-z1)/h по...

Точки пересечения кривой и прямой, заданных уравнениями - C++
Определить пересекаются ли кривая y=ax³+bx²+cx+d и прямая y=fx+g. При положительном ответе найти точку пересечения. Я сделал так ,но...

Точки пересечения прямой и функции с множеством точек - C++
Как найти количество пересечений прямой y с множеством точек (x,y)?

Дайте готовый код нахождения точки пересечения окружности с прямой :-) - C++
Нужен код нахождения точки пересечения окружности с прямой. Прямая задана координатами двух точек в 2D. Окружность &quot;сидит&quot; на одном из...

6
-=ЮрА=-
Заблокирован
Автор FAQ
16.08.2014, 19:29 #2
решение квадратного уравнения С++
1
vova-33333
1 / 1 / 0
Регистрация: 16.08.2014
Сообщений: 10
16.08.2014, 19:50  [ТС] #3
А можно указать на ошибку в моем коде?
В теории он должен работать нормально..
0
-=ЮрА=-
Заблокирован
Автор FAQ
16.08.2014, 20:49 #4
vova-33333, на каком конкретно вводе не работает?
Чисто визуально ошибку не увидел, потмоу в дебагере уже глянуть хочу под конкретный пример.
1
tehnar5
31 / 31 / 12
Регистрация: 03.05.2011
Сообщений: 84
16.08.2014, 21:15 #5
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Возможно, проблема в том, что Вы считаете дискриминант, а потом смотрите на его знак, если он отрицателен, то корней нет. Но надо смотреть на знак квадрата дискриминанта, то есть, B^2-4ac, так как если он отрицателен, то корень вы просто взять не можете, и тогда будет либо ошибка с вылетом программы, либо дальнейшие вычисления будут некорректными

Добавлено через 1 минуту
Еще возможно деление на 0, когда А= 0
1
Senarist
50 / 54 / 15
Регистрация: 14.03.2014
Сообщений: 637
16.08.2014, 21:48 #6
vova-33333 С какими именно цифрами получился неправильный результат? Например с этими работает нормально. Только не понятно почему -0. Ну и конечно же учесть что написал tehnar5
1
Миниатюры
Найти точки пересечения параболы и прямой  
vova-33333
1 / 1 / 0
Регистрация: 16.08.2014
Сообщений: 10
17.08.2014, 15:10  [ТС] #7
Спасибо ,tehnar5 , ваш ответ помог.
Тему можно закрыть.
0
17.08.2014, 15:10
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.08.2014, 15:10
Привет! Вот еще темы с ответами:

Найти координаты точек пересечения параболы и экспоненты - C++
Есть два задания, которые так и не смог осилить (с остальными справился) Очень нужна помощь. 1 . С клавиатуры пользователь вводит...

Найти точки пересечения прямых проходящих через заданные точки - C++
Всем привет! Прошу помощи в решении задачи: Дана система координат X:Y (по 25 точек в каждую сторону) В ней расположен ряд точек в...

Найти точку пересечения прямой с плоскостью - C++
Зарание спасибо.)

Найти точку пересечения отрезка с прямой - C++
Найти точку пересечения отрезка, заданного точками (х1;y1) и (x2;y2) с прямой, перпендикулярной данному отрезку, проходящей через точку...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

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