Решение квадратного уравнения в области действительных чисел (с использованием теоремы Виета) - C (СИ)
Формулировка задачи:
Решить уравнение ax2+bx+c=0 (a,b,c - заданные коэффициенты) в области действительных чисел (с использованием теор. Виета).
Если вводить целые числа, программа считает верно ( для примера ввод 1 5 4)
А если вводить -2 5 3, корни должны быть 3 и -0,5, а пишет, что корней нет.
Помогите пожалуйста исправить
Листинг программы
- #include "stdafx.h"
- #include <stdio.h>
- #include <math.h>
- #include<locale.h>
- int main(void) {
- double a, b, c, x1, x2;
- int k;
- setlocale(LC_ALL, "Russian");
- printf("Программа ...\n");
- printf("Введите значения a,b,c \n");
- scanf("%lf", &a);
- scanf("%lf", &b);
- scanf("%lf", &c);
- k = 0;
- for (x1 = -10; x1 <= 10; x1++)
- {
- for (x2 = -10; x2 <= 10; x2++)
- {
- if ((x1 + x2) == -b / a && (x1*x2) == c / a)
- {
- if (x1 == x2) printf("один корень=%.2lf\n", x1);
- else
- {
- printf("korni x1, %.2lf \n", x1);
- printf("korni x2, %.2lf \n", x2);
- }
- k = 1;
- break;
- }
- }
- if (k == 1)
- break;
- }
- if (k == 0) printf("kornej net\n");
- return 0;
- }
Решение задачи: «Решение квадратного уравнения в области действительных чисел (с использованием теоремы Виета)»
textual
Листинг программы
- #include<stdio.h>
- #include<math.h>
- int main(void)
- {
- double a,b,c,x1,x2;
- int fl=0;
- scanf("%lf%lf%lf",&a,&b,&c);
- for(x1=-20;x1<=20;x1+=0.01)
- {
- for(x2=-20; x2<=20;x2+=0.01)
- if(fabs(x1+x2+b/a)<=0.001 && fabs(x1*x2-c/a)<=0.001)
- {
- if(x1==x2) printf("%lf\n",x1);
- else printf("%lf %lf\n",x1,x2);
- fl=1;
- }
- if(fl) break;
- }
- return 0;
- }
Объяснение кода листинга программы
В этом коде реализуется решение квадратного уравнения в области действительных чисел с использованием теоремы Виета. Список действий:
- Ввод значений a, b и c с помощью функции scanf.
- Создание переменных x1 и x2 для хранения найденных корней.
- Создание переменной fl для отслеживания нахождения корней.
- Использование двух вложенных циклов для перебора всех возможных значений x1 и x2 от -20 до 20 с шагом 0.01.
- Проверка условия: если модуль (абсолютное значение) разности x1+x2+b/a меньше или равен 0.001, и модуль разности x1*x2-c/a меньше или равен 0.001, то это значит, что найдены корни уравнения.
- Если x1 и x2 равны, то выводится значение x1.
- Если x1 и x2 не равны, то выводятся значения x1 и x2.
- Переменная fl устанавливается в 1, чтобы выйти из внутреннего цикла.
- Если fl равно 1, то происходит выход из внешнего цикла с помощью оператора break.
- Программа завершается возвратом значения 0.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д