Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
HawKKK
0 / 0 / 0
Регистрация: 28.06.2015
Сообщений: 26
#1

Квадратное уравнение - C++

10.10.2015, 14:12. Просмотров 416. Ответов 11
Метки нет (Все метки)

Есть такое задание: Написать программу, которая найдет корни уравнения квадратного http://www.cyberforum.ru/cgi-bin/latex.cgi?{a}^{2}+bx+c=0 и проверить для данных type real которые равны: а=1е-16; b=10; c=1.
Не могу понять что нужно делать с a=1e-16?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.10.2015, 14:12
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Квадратное уравнение (C++):

Создать производные классы линейное уравнение и квадратное уравнение, в которых данная функция переопределена
Создать абстрактный базовый класс уравнение с виртуальной функцией - корни уравнения. Создать производные классы линейное уравнение и...

Квадратное уравнение
Здравствуйте! Это код квадратного уравнение. Компилируется все нормально. Но программа не выполняет поиск корней, если D>0 и D=0....

квадратное уравнение
написать функции вычисления квадрат.уравнения

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

Квадратное уравнение в с
Здравствуйте. Надо найти корни квадратного уравнения или показать что один корень или нет корней. Нужно сделать в с, а не в с++. Please,...

Квадратное уравнение
вопрос такой почему у меня все время ошибки в этом коде (Квадратное уравнение) Пишу в этот раздел тк я в C++ два дня #include...

11
nmcf
6247 / 5559 / 2529
Регистрация: 14.04.2014
Сообщений: 23,376
10.10.2015, 14:14 #2
Использовать в решении.
0
HawKKK
0 / 0 / 0
Регистрация: 28.06.2015
Сообщений: 26
10.10.2015, 14:27  [ТС] #3
nmcf, Мой код такой
C++
1
2
3
4
5
6
7
8
9
10
float a, b, c, d, x1, x2;
    a = 1e-16;
    b = 10;
    c = 1;
    d = (b*b) - 4 * a * c;
    cout << d << endl; // D=100  
    x1 = ((-b) + sqrt(d)) / 2 * a;
    x2 = ((-b) - sqrt(d)) / 2 * a;
    cout << x1 << endl; // Ответ 0
    cout << x2 << endl; // Ответ -1е-15
Меня смущает дискриминант т.к. b*b =100 так еще нужно отнять (4 * a * c)=число выйдет маленькое.
0
nmcf
6247 / 5559 / 2529
Регистрация: 14.04.2014
Сообщений: 23,376
10.10.2015, 14:31 #4
И что? Пусть будет маленькое. Только используй double. Откуда такое пристрастие к этому древнему float?
0
Barrent
246 / 122 / 54
Регистрация: 04.05.2013
Сообщений: 346
Завершенные тесты: 2
10.10.2015, 16:07 #5
Цитата Сообщение от nmcf Посмотреть сообщение
Откуда такое пристрастие к этому древнему float?

Не по теме:

4 байта же

0
zss
Модератор
Эксперт С++
6959 / 6521 / 4139
Регистрация: 18.12.2011
Сообщений: 17,209
Завершенные тесты: 1
10.10.2015, 16:10 #6
HawKKK,
Цитата Сообщение от HawKKK Посмотреть сообщение
x1 = ((-b) + sqrt(d)) / 2 * a;
Почему у Вас a попало в числитель?
C++
1
x1 = (-b + sqrt(d)) /( 2.0 * a);
Приблизительное значение обоих корней должно быть близко к решению при a=0, т.е.
x=-b/c=-10.0/1.0=-10.0
И, естественно, float меняйте на double.
0
Байт
Эксперт C
17777 / 11802 / 2453
Регистрация: 24.12.2010
Сообщений: 23,728
10.10.2015, 16:15 #7
Цитата Сообщение от zss Посмотреть сообщение
Почему у Вас a попало в числитель?
Дык, d = b*b - 4*a*c
А решать надо по-хитрому. В этом случае приблизительная формула оказывается точнее точной
sqrt(1 + x) = 1 + x/2
1
HawKKK
0 / 0 / 0
Регистрация: 28.06.2015
Сообщений: 26
11.10.2015, 11:47  [ТС] #8
Хорошо, но мне не нравится то что дискреминант получается 100, как можно убрать округление что бы вышло 99.9999999999999996?
0
zss
Модератор
Эксперт С++
6959 / 6521 / 4139
Регистрация: 18.12.2011
Сообщений: 17,209
Завершенные тесты: 1
11.10.2015, 11:53 #9
возьмите b=9.99999999999999
0
UnknownSoldier
585 / 106 / 46
Регистрация: 08.04.2015
Сообщений: 240
11.10.2015, 11:57 #10
Цитата Сообщение от HawKKK Посмотреть сообщение
как можно убрать округление что бы вышло 99.9999999999999996?
В типе double ~15 значащих цифр, он просто не может представлять числа с более высокой точностью.
0
zss
Модератор
Эксперт С++
6959 / 6521 / 4139
Регистрация: 18.12.2011
Сообщений: 17,209
Завершенные тесты: 1
11.10.2015, 12:23 #11
Цитата Сообщение от UnknownSoldier Посмотреть сообщение
~15 значащих цифр
Чуть больше: ~17
0
Байт
Эксперт C
17777 / 11802 / 2453
Регистрация: 24.12.2010
Сообщений: 23,728
11.10.2015, 12:42 #12
Почему-то никто не обратил внимания на
Цитата Сообщение от Байт Посмотреть сообщение
sqrt(1 + x) = 1 + x/2
А ведь тут есть зернышко истины...
0
11.10.2015, 12:42
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.10.2015, 12:42
Привет! Вот еще темы с решениями:

Квадратное уравнение
Пишет ошибку &quot;тип &quot;double&quot; не требуется&quot; и &quot;d: необъявленный идентификатор&quot;, помогите разобраться плз #include &quot;stdafx.h&quot; #include...

Квадратное уравнение
ax^2+bx+c=o в c\c++

Квадратное уравнение
ПОМОГИТЕ ПЛИЗ ДОПИСАТЬ ЗАДАЧУ А ТО ЧТОТ ВАШПЕ НЕПОЛУЧАЕТСЯ , НЕРАБОТАЕТ ))*ЕСЛИ МОЖНО ТО С КОММЕНТАРИЯМИ 1)Написать программу решения...

Квадратное уравнение
Решил немного попрактиковаться и написать програмку для решения квадратных уравнений. И у меня вопрос - поддерживает ли С++ комплексные...


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

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

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