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

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

06.03.2020, 14:08. Показов 16262. Ответов 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,268
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,687
06.03.2020, 22:28
в соседнем топике подобрали
надо не отставать, ну что, решаем кубические уранения? Там и мнимых корней больше.
0
736 / 700 / 110
Регистрация: 29.05.2015
Сообщений: 4,268
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): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru