Решение квадратного уравнения в области действительных чисел (с использованием теоремы Виета) - 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.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д