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

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

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

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

C++ Найти координаты точек пересечения параболы и экспоненты
C++ Точки пересечения кривой и прямой, заданных уравнениями
Дайте готовый код нахождения точки пересечения окружности с прямой :-) C++

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

Или воспользуйтесь поиском по форуму:
vova-33333
1 / 1 / 0
Регистрация: 16.08.2014
Сообщений: 10
17.08.2014, 15:10  [ТС]     Найти точки пересечения параболы и прямой #7
Спасибо ,tehnar5 , ваш ответ помог.
Тему можно закрыть.
Yandex
Объявления
17.08.2014, 15:10     Найти точки пересечения параболы и прямой
Ответ Создать тему
Опции темы

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