С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.54/76: Рейтинг темы: голосов - 76, средняя оценка - 4.54
Programmer
 Аватар для DannerDOS
40 / 40 / 6
Регистрация: 07.04.2009
Сообщений: 187

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

16.09.2009, 18:54. Показов 15076. Ответов 25
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте все кто читает эти строки!
Большой привет вам из раздела Delphi!
Моему другу появилось необходимость написать прогу на С++ вот и помогаю (сам он ничегошеньки обсалютно не знает... (имееться в виду программирование))
Ну так вот:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream.h>
void main()
{
  const float pi=3.14;
  float va, vb, vc;
  cout << " Enter a value in 1 not quadrupeds: \n";
    cin >> va;
  cout << " Enter a value in 2 not quadrupeds: \n";
    cin >> vb;
  cout << " Enter a value in 3 not quadrupeds: \n";
    cin >> vc;
  float x1, x2;
  x1 = 2*vc/(-vb-sqrt(sqr(vb)-4*va*vc));
  x2 = 2*vc/(-vb+sqrt(sqr(vb)-4*va*vc));
  cout << "\n x1, x2 = " << x1 << ", " << x2;
}
Накождение корней квадр.ур.
Формулы брал отсюда вот: http://www.cyberguru.ru/cpp-so... eniya.html
Можете помоч... Сделать так что бы данный код работал в Borland C++ 5.04 for Windows...
P.S. Использование дополнительных модулей запрещено! Структура лишь предоставленная...
Если что сильно не ругайтесь я это написал благодаря его тетрадке... На С++ неразу не приходилось писать до сегоднешнего момента...
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
16.09.2009, 18:54
Ответы с готовыми решениями:

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

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

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

25
Эксперт JavaЭксперт С++
 Аватар для M128K145
8384 / 3617 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
16.09.2009, 19:24
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream.h>
#include <math.h>
void main()
{
  float va, vb, vc;
  cout << " Enter a value in 1 not quadrupeds: \n";
    cin >> va;
  cout << " Enter a value in 2 not quadrupeds: \n";
    cin >> vb;
  cout << " Enter a value in 3 not quadrupeds: \n";
    cin >> vc;
  float x1, x2;
  x1 = 2*vc/(-vb-sqrt(vb*vb-4*va*vc));
  x2 = 2*vc/(-vb+sqrt(vb*vb-4*va*vc));
  cout << "\n x1, x2 = " << x1 << ", " << x2;
}
1
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
16.09.2009, 19:40
Ошибка в математике. Надо так:
C++
1
2
  x1 = (-vb-sqrt(vb*vb-4*va*vc))/2a;
  x2 = (-vb+sqrt(vb*vb-4*va*vc))/2a;
1
125 / 116 / 17
Регистрация: 27.02.2007
Сообщений: 291
16.09.2009, 21:41
kravam, цитата с сайта http://www.cyberguru.ru/cpp-so... neniya.htm
Существует и альтернативный способ получения корней: x1=2*c/(-b-sqrt(b*b-4*a*c)), x2=2*c/(-b+sqrt(b*b-4*a*c)).
1
 Аватар для insolent
829 / 353 / 64
Регистрация: 30.01.2009
Сообщений: 1,204
17.09.2009, 00:08
DannerDOS, может подойдет это решение, но оно, скорее всего, с использованием "дополнительных модулей"
1
17.09.2009, 00:12

Не по теме:

а почему в borland c++ не надо писать using namespace std??

1
17.09.2009, 00:16

Не по теме:

Цитата Сообщение от Lolcht0 Посмотреть сообщение
using namespace std
Не нравится строка - закомментируй или убери)

1
5 / 5 / 1
Регистрация: 16.09.2009
Сообщений: 4
17.09.2009, 00:17
Цитата Сообщение от АНК Посмотреть сообщение
kravam, цитата с сайта http://www.cyberguru.ru/cpp-so... neniya.htm

вспоминаем школьный курс алгебры:
C
1
2
x=(-b+sqrt(D))/2*a , где D - дискриминант
D=b*b-4*a*c;
то есть:
C
1
x=(-b+sqrt(b*b-4*a*c))/2*a;
а это совсем не похожу на то что пишут там http://www.cyberguru.ru/cpp-so... neniya.htm
1
Путешественница
 Аватар для MotherBoard
1250 / 478 / 11
Регистрация: 22.02.2009
Сообщений: 2,842
17.09.2009, 00:31
Странно,в решении программок математических не везде подключена математическая библиотека! Я понимаю так,что это не принципиально в данного рода программах?
1
Эксперт JavaЭксперт С++
 Аватар для M128K145
8384 / 3617 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
17.09.2009, 00:38
Системник, в math содержатся тригонометрические функции, корни, модули и все в таком роде. Так что если задача этого не требует, то можно её не подключать
2
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
17.09.2009, 00:42
Тредстартерская математика тоже канает, как ни странно.
Век живи, век учись.
1
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
17.09.2009, 08:58
2*(x^2) + x = 0

корни -0.5 и 0, а прога выдаст ноль

x^2 - x = 0

корни 1 и 0, а прога выдаст ноль
1
Эксперт С++
 Аватар для odip
7176 / 3234 / 82
Регистрация: 17.06.2009
Сообщений: 14,164
17.09.2009, 13:28
Очевидно формулы для x1 и x2 неправильные.
http://ru.wikipedia.org/wiki/Квадратное_уравнение

Добавлено через 2 минуты
Похоже правильные - но не стандартные
1
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
18.09.2009, 05:03
при c = 0 будет неправильно показывать корни для бесконечного множества полиномов этих
прога утверждает, что x^2 + x = 2*(x^2) + x = x^2
1
Путешественница
 Аватар для MotherBoard
1250 / 478 / 11
Регистрация: 22.02.2009
Сообщений: 2,842
18.09.2009, 18:16
Цитата Сообщение от M128K145 Посмотреть сообщение
Системник, в math содержатся тригонометрические функции, корни, модули и все в таком роде. Так что если задача этого не требует, то можно её не подключать
M128K145 sqrt я видела в математической библиотеке! Корень используется
0
 Аватар для DebuggeR94
13 / 9 / 3
Регистрация: 06.01.2015
Сообщений: 62
17.03.2020, 22:51
Мое решение, максимально комментированное:

Код

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
#include <cmath>
#include <iostream>
 
int main()
{
    int a, b, c;
 
    std::cout << "A program for solving quadratic equations of the form ax^2 + bx + c = 0 (relative to x).\n"
              << "Enter coefficients \'a\' \'b\' \'c\': ";
 
    std::cin >> a >> b >> c;                    // считываем коэффициенты введенные пользователем
 
    while (a == 0) {                            // коэффициент при первом слагаемом уравнения не может быть равным нулю
        std::cout << "Coefficient \'a\' cannot be zero!\nEnter coefficient \'a\': ";
        std::cin >> a;
    }
 
    double d = pow(b, 2) - 4 * a * c;           // вычисляем дискриминант по формуле: d = b^2 − 4ac
 
    if (d > 0) {                                // дискриминант больше нуля: уравнение имеет два корня
        double x1 = (-b - sqrt(d)) / (2 * a);   // вычисляем первый корень по формуле: x1 = (-b - √d) / (2a)
        double x2 = (-b + sqrt(d)) / (2 * a);   // вычисляем второй корень по формуле: x2 = (-b + √d) / (2a)
 
        std::cout << x1 << " " << x2 << std::endl;
    }
    else if (d == 0) {                          // дискриминант равен нулю: уравнение имеет один корень
        double x = (-b + sqrt(d)) / (2 * a);    // вычисляем корень по формуле: x1 = (-b ± √d) / (2a)
 
        std::cout << x << std::endl;            // повторный вывод корня, сделан из за специфики проверки задания на сайте
    }
    else {                                      // дискриминант меньше нуля: уравнение не имеет корней
        std::cout << "No real roots" << std::endl;
    }
 
    return 0;
}


Прошу обратить внимание на обрамленный в скобки знаменатель, в вычислении корня. Почему-то многие тут пишут решение без скобок. А ведь деление на произведение a и b, не равнозначно делению на a, а затем умножению разности на b!

Те без обрамленного в скобки знаменателя, корни для коэффициэнтов 2 7 4, будут -11.1231 -2.87689, а должны быть -2.78078 -0.719224.
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
17.03.2020, 23:39
Цитата Сообщение от DebuggeR94 Посмотреть сообщение
Мое решение, максимально комментированное
забыли прокомментировать из каких соображений для коэффициентов взяли тип int + неправильное сравнение чисел типа double
0
 Аватар для DebuggeR94
13 / 9 / 3
Регистрация: 06.01.2015
Сообщений: 62
18.03.2020, 02:46
Цитата Сообщение от Yetty Посмотреть сообщение
забыли прокомментировать из каких соображений для коэффициентов взяли тип int
Из условий решаемой задачи, когда я вижу в условии "На вход программа получает три целых числа: a, b и c, соответственно.", я использую int. Я думаю те у кого условие будет требовать десятичные дроби, смогут сменить тип, в одном единственном месте.
Цитата Сообщение от Yetty Посмотреть сообщение
неправильное сравнение чисел типа double
А вот это более интересно! Сравнивать нужно с 0.0 что ли? Тут не понял, оба сравнения выдают идентичный результат:
C++
1
2
3
4
5
    std::cout << (0 < 0.00001) << std::endl;    // 1
    std::cout << (0 == 0.0001) << std::endl;    // 0
 
    std::cout << (0.0 < 0.0001) << std::endl;   // 1
    std::cout << (0.0 == 0.0001) << std::endl;  // 0
Тогда зачем? В чем неправильность?

Добавлено через 10 минут
Я еще помимо Visual Studio в Code Blocks проверил. Вдруг gcc что эдакое выкинет, но нет, результат тот же...
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
18.03.2020, 12:58
Цитата Сообщение от DebuggeR94 Посмотреть сообщение
На вход программа получает три целых числа: a, b и c
в этой теме такого условия нет. придумывать своё условие и выкладывать его в теме с задачей как
Цитата Сообщение от DebuggeR94 Посмотреть сообщение
Мое решение
некорректно
Цитата Сообщение от DebuggeR94 Посмотреть сообщение
В чем неправильность?
уже сообщил выше. D - число типа double, точное сравнение такого числа, например D==0 может давать ошибочный результат. числа такого типа сравниваются с помощью малого числа. почитайте сравнение вещественных чисел.
Цитата Сообщение от DebuggeR94 Посмотреть сообщение
проверил
проверяйте лучше
0
 Аватар для DebuggeR94
13 / 9 / 3
Регистрация: 06.01.2015
Сообщений: 62
18.03.2020, 14:48
Цитата Сообщение от Yetty Посмотреть сообщение
в этой теме такого условия нет.
Я поделился своим решением, собственной задачи, с расписанными шагами, и используемыми формулами. Мое решение как я упоминал ранее, легко изменить под свое условие заменой всего одного слова, в одном месте. Еще вопросы?
Цитата Сообщение от Yetty Посмотреть сообщение
придумывать своё условие
Смелое утверждение! Могу вам в ЛС ссылку дать на онлайн курс с этой задачей. Тут не буду чтобы за рекламу не сочли.
Цитата Сообщение от Yetty Посмотреть сообщение
решение некорректно
Чем? Тем что в отличии от представленых здесь c 2009 года, и не исправленных по сей день, выдает правильный результат? Что-то я вашего, правильного тут не увидел, за 11 лет не осилили? Зато критиковать чужой прибежали первым!) Ладно если бы эта критика была хотя бы обоснованной.
Цитата Сообщение от Yetty Посмотреть сообщение
D==0 может давать ошибочный результат
В каком месте? Будьте добры четкий конкретный пример.
Цитата Сообщение от Yetty Посмотреть сообщение
проверяйте лучше
Проверил с разными условиями сравнения, в разных средах разработки, с разными компиляторами. Никаких проблем! А если таковые по вашему мнению имеются, будьте добры описать четкую конкретную проверяемую ситуацию. Без этого ваше утверждение ничего не стоит.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
18.03.2020, 14:48
Помогаю со студенческими работами здесь

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

Нахождение корней квадратного уравнения через дискриминант
Здравствуйте! Начинаю работать в C++ Builder 3.1 в DOSBOXe. Стоит задача реализовать программу нахождения корней квадратного уравнения...

Нахождение корней квадратного и линейного уравнений
Написать перегруженные шаблоны функций для нахождения корней линейного (а*х + b =0) и квадратного (a*x^2 + b*x +c=0) уравнений. Замечание в...

Вычисление корней квадратного уравнения
Напишите пожалуйста подпрограмму для обчисления корней квадратного уравнения. Если можно с комментариями.

Вычисление корней квадратного уравнения
решите кому не сложно... составить программу расчитывающую корни квадратного уравнения с учетом знака дискреминанта... заранее спасибо.


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru