1 / 1 / 0
Регистрация: 07.06.2014
Сообщений: 49
1

Нахождение корней квадратного уравнения через дискриминант

13.06.2015, 18:54. Показов 2785. Ответов 7
Метки нет (Все метки)

Здравствуйте! Начинаю работать в C++ Builder 3.1 в DOSBOXe. Стоит задача реализовать программу нахождения корней квадратного уравнения через дискриминант, коэффициенты a,b,c вводятся с клавиатуры. Вот моя попытка реализации:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream.h>
#include <math.h>
int main(){
  int a,b,c,x1,x2,D,v;
  cout<<"a=";
  cin>>a;
  cout<<"b=";
  cin>>b;
  cout<<"c=";
  cin>>c;
  D=b*b-4*a*c;
  v=sqrt(D)/2*a;
  cout<<"v="<<v;
  cout<<"D="<<D;
  if (D<0) cout<<"No real roots";
  else {if (D==0) {x1=(-1*b)/2*a; cout<<"x1="<<x1;}}
  else {x1=-1*b+v; x2=-1*b-v; cout<<"x1="<<x1; cout<<"x2="<<x2;}
  return 0;
}
Программа работает неверно. При компиляции выдает ошибку "Misplaced else". Без вот этой строки
C++
1
else {x1=-1*b+v; x2=-1*b-v; cout<<"x1="<<x1; cout<<"x2="<<x2;}
программа компилируется, но неверно вычисляется единственный корень x1, при D=0. К примеру, при а=2, b=4, c=2 результат x1=-4 (при должном -1). Помогите пожалуйста разобраться с использованием условий и устранить проблему неверного вычисления корня.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.06.2015, 18:54
Ответы с готовыми решениями:

Найти корни квадратного уравнения, через дискриминант
Найти корни квадратного уравнения, через дискриминант В зависимости от того, какое значение может...

Нахождение корней квадратного уравнения
Здравствуйте , показывает ошибку в этих строчках,ругается на функции sqrt и pow объясните почему...

Нахождение корней квадратного уравнения
Знаю, что на эту тему уже много было написано, но мне нужно точное решение задачи, поскольку...

Нахождение корней квадратного уравнения С++
Как найти корни квадратного уравнения С++?Задаются ведь значения x.y.z,а на выходе выводится...

7
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32486 / 20972 / 8115
Регистрация: 22.10.2011
Сообщений: 36,242
Записей в блоге: 7
13.06.2015, 18:55 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
26
27
28
29
30
31
32
#include <iostream.h>
#include <math.h>
 
int main()
{
    int a, b, c, x1, x2, D, v;
    cout << "a=";
    cin >> a;
    cout << "b=";
    cin >> b;
    cout << "c=";
    cin >> c;
    D = b * b - 4 * a * c;
    v = sqrt(D) / 2 * a;
    cout << "v=" << v;
    cout << "D=" << D;
    if (D < 0)
        cout << "No real roots";
    else if (D == 0)
    {
        x1 = (-1 * b) / 2 * a;
        cout << "x1=" << x1;
    }
    else
    {
        x1 = -1 * b + v;
        x2 = -1 * b - v;
        cout << "x1=" << x1;
        cout << "x2=" << x2;
    }
    return 0;
}
0
1 / 1 / 0
Регистрация: 07.06.2014
Сообщений: 49
13.06.2015, 19:04  [ТС] 3
Спасибо, с условиями разобрался. Но по-прежнему неверно вычисляет корень.
0
случайный прохожий
2374 / 1590 / 549
Регистрация: 20.07.2013
Сообщений: 4,473
13.06.2015, 20:20 4
В порядке действий разбираешься?
Тебе нужно делить на 2a, а ты делишь на 2 и умножаешь на a при вычислении v и x1 при D=0.
И переменные должны быть не типа int, а float или double (либо приводить результат к одному из этих типов). А то, например, при делении 1 на 2 получишь 0 вместо 0,5.
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32486 / 20972 / 8115
Регистрация: 22.10.2011
Сообщений: 36,242
Записей в блоге: 7
13.06.2015, 20:22 5
C++
1
x1 = (-1 * b) / 2 * a;
это вычисление
https://www.cyberforum.ru/cgi-bin/latex.cgi?x_1=\frac{-b}{2}\;a, а тебе нужно чтобы a было в знаменателе. Перепиши:

C++
1
2
3
x1 = (-1 * b) / 2 / a;
// или
x1 = (-1 * b) / (2 * a);
И не только здесь, при вычислении v та же ошибка...
0
D1973
13.06.2015, 20:32
  #6

Не по теме:

Цитата Сообщение от conde Посмотреть сообщение
Начинаю работать в C++ Builder 3.1 в DOSBOXe
Может, все таки просто C++? Builder, он, как не крути, под Windows разработан, при чем тут DOS-Box???

0
volvo
13.06.2015, 20:36
  #7

Не по теме:

Borland C++ 3.1, наверняка. Постоянно путают с Билдером.

0
1 / 1 / 0
Регистрация: 07.06.2014
Сообщений: 49
14.06.2015, 15:08  [ТС] 8
Ошибка ясна, спасибо всем. И все же да, просто Borland C++ 3.1.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.06.2015, 15:08
Помогаю со студенческими работами здесь

Нахождение корней квадратного уравнения
Здравствуйте все кто читает эти строки! Большой привет вам из раздела Delphi! Моему другу...

Нахождение корней квадратного уравнения (Pascal -> C++)
Помогите Перевести с Pascal на C++ Можно и картинкой Добавлено через 33 секунды Вот код: ...

Тема: Функции. Нахождение комплексных корней квадратного уравнения
Тема: Функции. Нахождение комплексных корней квадратного уравнения. Написать функцию, которая...

Найти дискриминант квадратного уравнения
Доброго времени суток. Написал код, который 100% выполняет задачу, но возникает непонятная мне...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru