Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.89/75: Рейтинг темы: голосов - 75, средняя оценка - 4.89
0 / 0 / 0
Регистрация: 18.10.2019
Сообщений: 21

Написать программу для решения квадратного уравнения

06.03.2020, 14:08. Показов 16371. Ответов 23
Метки c++ (Все метки)

Студворк — интернет-сервис помощи студентам
Написать программу для решения квадратного уравнения, которое имеет общий вид ax^2+bx+c= 0. Параметры a , b и c вводятся пользователем. Использовать аналитические формулы для решений уравнения, при этом учесть различные варианты: например, a = 0 , отсутствие решений (комплексные решения).
Заранее благодарю за решение!!!
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
06.03.2020, 14:08
Ответы с готовыми решениями:

Написать программу решения квадратного уравнения
1) Написать программу решения квадратного уравнения. Корни только вещественные. Ввод и вывод через стандартные потоки ввода-вывода. Вывод...

Написать программу решения квадратного уравнения.
Всем привет! Ребят, прошу помощи. помогите пожалуйста написать программу: Написать программу решения квадратного уравнения....

Написать программу решения квадратного уравнения (C++98 или C++11)
написать программу решения квадратного уравнения, корни вычислять только вещественны,е ввод и вывод через стандартые потоки ввода-вывода,...

23
653 / 466 / 183
Регистрация: 23.04.2019
Сообщений: 1,987
06.03.2020, 14:12
я такое ещё в 8 классе делал, лень было проверять, так я сверял с результатом проги)
C++
1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
#include <cmath>
 
int main()
{
    double a, b, c;
    std::cin >> a >> b >> c;
    std::cout << "x1 = " << (-b + sqrt(b * b - 4. * a * c)) / 2. * a;
    std::cout << std::endl;
    std::cout << "x2 = " << (-b - sqrt(b * b - 4. * a * c)) / 2. * a;
}
0
391 / 64 / 11
Регистрация: 06.08.2018
Сообщений: 202
06.03.2020, 14:17
я бы еще сделала проверку на то, что корни существуют, т.е. дискриминант не отрицательный. Иначе под корнем может получиться отрицательное число и... та-дааам…. и креш.
Ну и "а" надо проверить, что не 0, а иначе... та-дааам...
0
653 / 466 / 183
Регистрация: 23.04.2019
Сообщений: 1,987
06.03.2020, 14:22
Цитата Сообщение от Крашеная Посмотреть сообщение
Иначе под корнем может получиться отрицательное число и... та-дааам…. и креш.
Ну и "а" надо проверить, что не 0, а иначе... та-дааам...
либы cpp умнее, sqrt вернёт -nan, что будет выводиться при D < 0
0
391 / 64 / 11
Регистрация: 06.08.2018
Сообщений: 202
06.03.2020, 14:26
Цитата Сообщение от AndryS1 Посмотреть сообщение
либы cpp умнее, sqrt вернёт -nan, что будет выводиться при D < 0
а оно, -nan , устроит? А если деление на 0, тоже -nan выдаст? (честно не знаю, и проверить прям сейчас не могу)
Кроме тог, если а==0, то надо решать линейное уравнения - корень-то все равно найти надо, нет?
0
653 / 466 / 183
Регистрация: 23.04.2019
Сообщений: 1,987
06.03.2020, 14:27
щяс поправлю
0
391 / 64 / 11
Регистрация: 06.08.2018
Сообщений: 202
06.03.2020, 14:29
Цитата Сообщение от AndryS1 Посмотреть сообщение
щяс поправлю
может автору топика стоит самому попробовать ? ))
0
653 / 466 / 183
Регистрация: 23.04.2019
Сообщений: 1,987
06.03.2020, 14:31
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <cmath>
 
int main()
{
    double a, b, c;
    std::cin >> a >> b >> c;
    if (a == 0)
    {
        std::cout << "x = " << -c / b << std::endl;
                return 0;
    }
    std::cout << "x1 = " << (-b + sqrt(b * b - 4. * a * c)) / 2. * a;
    std::cout << std::endl;
    std::cout << "x2 = " << (-b - sqrt(b * b - 4. * a * c)) / 2. * a;
}
Крашеная, есть ещё замечания?

Добавлено через 1 минуту
Цитата Сообщение от Крашеная Посмотреть сообщение
может автору топика стоит самому попробовать ? ))
если он не просит о помощи, а просто выкладывает задание, таким не нужно ничего пробовать, они просто хотят закончить это понятия не имея, что происходит
1
391 / 64 / 11
Регистрация: 06.08.2018
Сообщений: 202
06.03.2020, 14:34
Цитата Сообщение от AndryS1 Посмотреть сообщение
есть ещё замечания?
есть! а если b ==0?

Добавлено через 1 минуту
и скобочки ( 2. * а )
0
653 / 466 / 183
Регистрация: 23.04.2019
Сообщений: 1,987
06.03.2020, 14:41
Цитата Сообщение от Крашеная Посмотреть сообщение
есть!
без вопросов, поправлю
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
#include <iostream>
#include <cmath>
 
int main()
{
    double a, b, c;
    std::cin >> a >> b >> c;
    if (a == 0. && b == 0. && c == 0.)
    {
        std::cout << "x = x";
        return 0;
    }
    else if (a == 0.)
    {
        std::cout << "x = " << -c / b << std::endl;
        return 0;
    } 
    else if (b == 0.)
    {
        std::cout << "x1 = " << sqrt(-c) << std::endl;
        std::cout << "x2 = " << -sqrt(-c);
        return 0;
    }
    std::cout << "x1 = " << (-b + sqrt(b * b - 4. * a * c)) / (2. * a);
    std::cout << std::endl;
    std::cout << "x2 = " << (-b - sqrt(b * b - 4. * a * c)) / (2. * a);
}
где ещё
1
391 / 64 / 11
Регистрация: 06.08.2018
Сообщений: 202
06.03.2020, 16:14
AndryS1, проверка на b!=0 должна быть немножко не там, у вас когда а==0, то тогда b в знаменателе оказывается, а когда а!=0, то b вполне может быть равной нулю, там не страшно, в этом случае вариант с дискриминантом справится
П.С. блин, какая я сегодня зануда, оказывается
0
736 / 700 / 110
Регистрация: 29.05.2015
Сообщений: 4,279
06.03.2020, 20:04
Цитата Сообщение от Крашеная Посмотреть сообщение
я бы еще сделала проверку на то, что корни существуют, т.е. дискриминант не отрицательный.
Давайте с комплексными числами решайте, нефиг расслабляться!
0
653 / 466 / 183
Регистрация: 23.04.2019
Сообщений: 1,987
06.03.2020, 20:09
Цитата Сообщение от alexu_007 Посмотреть сообщение
Давайте с комплексными числами решайте, нефиг расслабляться!
решай
0
391 / 64 / 11
Регистрация: 06.08.2018
Сообщений: 202
06.03.2020, 22:22
Цитата Сообщение от alexu_007 Посмотреть сообщение
Давайте с комплексными числами решайте, нефиг расслабляться!

А шуточка-то вторична - в соседнем топике подобрали
0
 Аватар для Annemesski
2673 / 1335 / 480
Регистрация: 08.11.2016
Сообщений: 3,690
06.03.2020, 22:28
в соседнем топике подобрали
надо не отставать, ну что, решаем кубические уранения? Там и мнимых корней больше.
0
736 / 700 / 110
Регистрация: 29.05.2015
Сообщений: 4,279
07.03.2020, 08:57
Цитата Сообщение от Крашеная Посмотреть сообщение
А шуточка-то вторична - в соседнем топике подобрали
Не, там были какие-то другие комплексные числа. Я шутил про свои.

Добавлено через 36 секунд
Цитата Сообщение от AndryS1 Посмотреть сообщение
решай
Не умею...
0
0 / 0 / 0
Регистрация: 18.10.2019
Сообщений: 21
07.03.2020, 12:31  [ТС]
спасибо большое, правда пришлось чутка подправить код, там где а=0 при таком случае корней нет, ну и когда b=0 мы получаем формулу (-с/а), а в остальном все хорошо еще раз благодарю!
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
07.03.2020, 12:47
cazrot, не может там быть хорошо. кроме отработки значений параметров нужно рассматривать случаи когда дискриминанты D<0, D=0, D>0. пишите код самостоятельно и сбрасывайте что получается.
Цитата Сообщение от cazrot Посмотреть сообщение
где а=0 при таком случае корней нет, ну и когда b=0 мы получаем формулу (-с/а)
это неправильно. посмотрите на уравнение ax2 + bx + c = 0
1
0 / 0 / 0
Регистрация: 18.10.2019
Сообщений: 21
10.03.2020, 02:27  [ТС]
когда дискриминанты D<0, D=0, D>0 я их все прописал сделал, так чтоб дискриминант искался отдельно и прогонялся по всем этим случаям, а по поводу уравнения все правильно, так как мы находим два корня после нахождения дискриминанта по формуле (-b +-sqrt(d)) / a*2 из этой формулы видим, что а не может ровняться нулю, так как на ноль делить нельзя поэтому если а=0, то корней нет, а при случае когда b=0 мы получаем формулу ax^2 + c = 0, где с мы переносим в правую часть ах^2 = -c и после получаем x^2 = -c/a ну и финальное уравнение x = sqrt(-c/a) ну и второй строкой там прописано тоже самое, но с минусом, так что тут все правильно прост там где было написано sqrt(-c) я исправил на sqrt(-c/a)

Добавлено через 10 минут
только щас понял, о чем вы говорили про случай когда а=0 там выходит bx + c = 0 и можно его спокойно решать, тут да косякнул щас исправлю, спасибо, что подметили

Добавлено через 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
{
    double a, b, c, d; 
    cin >> a >> b >> c;
    if (a == 0 && b == 0 && c == 0) 
    {
        cout << "0 = 0";
        return 0;
    }
    else if (a == 0)
    {
        cout << "x = " << (-c / b) << endl;
        return 0;
    }
    else if (b == 0)
    {
        cout << "x1 = " << sqrt(-c / a) << endl;
        cout << "x2 = " << -sqrt(-c / a);
        return 0;
    }
    d = b * b - 4 * a * c; 
    if (d < 0)
    {
        cout << "No solutions" << endl;
        return 0;
    }
    else if (d == 0)
    {
        cout << "x1 =" << (-b / (a * 2)) << endl;
        return 0;
    }
    cout << "x1 = " << (-b + sqrt(d)) / (2 * a) << endl;
    cout << "x2 = " << (-b - sqrt(d)) / (2 * a);
}
Добавлено через 5 минут
хотел бы вот еще, что спросить как делать эти задания к коду выше
1. Подберите идентификаторы переменных и констант. Для каждого идентификатора укажите в комментариях его смысловое назначение в терминах условия задачи.
2. Для каждого использованного типа укажите название на русском языке, количество байт для хранения, диапазон принимаемых значений.
было бы очень хорошо, если бы вы объяснили на простом языке
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
10.03.2020, 08:49
Лучший ответ Сообщение было отмечено cazrot как решение

Решение

cazrot, уберите
Цитата Сообщение от cazrot Посмотреть сообщение
cout << "0 = 0";
во-первых эта запись не информативна, во-вторых это никто не спрашивает

рассматривайте при
a=0 и b!=0 - линейное уравнение, решение x=-с/b
a=0 и b=0 и с=0 - решений бесконечно много
a=0 и b=0 и с!=0 - решений нет
в остальных случаях квадратное уравнение. дискриминант D - число типа double, с нулём числа такого типа сравниваются с помощью малого числа
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
double a, b, c, x1, x2, D;
const double eps=1e-9;
cout << "a=";  cin >> a;
cout << "b=";  cin >> b;
cout << "c=";  cin >> c;
D=b*b-4.*a*c;
if(D>eps) 
    {
        x1 = (-b+sqrt(D))/(2.*a);        
        x2 = (-b-sqrt(D))/(2.*a);
        cout << "x1=" << x1 << "\nx2=" << x2 << "\n";        
    }
else if (fabs(D)<=eps)
   { 
        x1=-b/(2.*a);
        cout << "x1=x2=" << x1 << "\n";
   }
else cout << "No solutions\n";
Цитата Сообщение от cazrot Посмотреть сообщение
1. Подберите идентификаторы переменных и констант. Для каждого идентификатора укажите в комментариях его смысловое назначение в терминах условия задачи.
идентификатор - имя. идентификатор переменной - имя переменной, идентификатор константы - имя константы. для комментариев напишите в программе объявление каждой в отдельную строку: (там где комментариев нет - найдите информацию сами)
C++
1
2
3
4
5
6
double a; // a - старший коэффициент квадратного уравнения
double b; //  
double c; //
double x1; // x1 - первый корень квадратного уравнения
double x2; //
const double eps=1e-9; // eps - малое число
Цитата Сообщение от cazrot Посмотреть сообщение
2. Для каждого использованного типа укажите название на русском языке, количество байт для хранения, диапазон принимаемых значений.
выберите нужные Вам типы:
int — целочисленный тип данных.
float — тип данных с плавающей запятой.
double — тип данных с плавающей запятой двойной точности.
char — символьный тип данных.
bool — логический тип данных.

информацию сколько байт занимает нужный Вам тип и диапазон значений, которые он принимает найдите в интернете
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
10.03.2020, 08:49
Помогаю со студенческими работами здесь

Написать программу решения квадратного уравнения. DEV C++
Помогите пожалуйста !! Написать программу решения квадратного уравнения. Корни могут быть комплексными. Установить ширину поля 10...

Написать функцию для решения квадратного уравнения (HELP)
Задача: Написать функцию для решения квадратного уравнения. Функция получает коэффициенты квадратного уравнения и указатели на...

Составить программу для решения квадратного уравнения методом дискриминанта.
Составить программу для решения квадратного уравнения методом дискриминанта.

Написать функцию для решения квадратного уравнения и присваивать элементам массивов корни
Здравствуйте. Необходима помощь с заданием. Текст следующий: Имееются 2 одномерных массива с количеством элементов меньше 20. И есть...

Написал программу для решения квадратного уравнения, но что то пошло не так
Написал программу по решению квадратного уравнения но я когда записываю коффиценты &quot;Vvedite kofficent a 0 Vvedite kofficent b ...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&amp;d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru