Решение квадратного уравнения в области действительных чисел (с использованием теоремы Виета) - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Решить уравнение ax2+bx+c=0 (a,b,c - заданные коэффициенты) в области действительных чисел (с использованием теор. Виета). Если вводить целые числа, программа считает верно ( для примера ввод 1 5 4) А если вводить -2 5 3, корни должны быть 3 и -0,5, а пишет, что корней нет. Помогите пожалуйста исправить
Листинг программы
  1. #include "stdafx.h"
  2. #include <stdio.h>
  3. #include <math.h>
  4. #include<locale.h>
  5. int main(void) {
  6. double a, b, c, x1, x2;
  7. int k;
  8. setlocale(LC_ALL, "Russian");
  9. printf("Программа ...\n");
  10. printf("Введите значения a,b,c \n");
  11. scanf("%lf", &a);
  12. scanf("%lf", &b);
  13. scanf("%lf", &c);
  14. k = 0;
  15. for (x1 = -10; x1 <= 10; x1++)
  16. {
  17. for (x2 = -10; x2 <= 10; x2++)
  18. {
  19. if ((x1 + x2) == -b / a && (x1*x2) == c / a)
  20. {
  21. if (x1 == x2) printf("один корень=%.2lf\n", x1);
  22. else
  23. {
  24. printf("korni x1, %.2lf \n", x1);
  25. printf("korni x2, %.2lf \n", x2);
  26. }
  27. k = 1;
  28. break;
  29. }
  30. }
  31. if (k == 1)
  32. break;
  33. }
  34. if (k == 0) printf("kornej net\n");
  35. return 0;
  36. }

Решение задачи: «Решение квадратного уравнения в области действительных чисел (с использованием теоремы Виета)»

textual
Листинг программы
  1. #include<stdio.h>
  2. #include<math.h>
  3. int main(void)
  4. {
  5.     double a,b,c,x1,x2;
  6.     int fl=0;
  7.     scanf("%lf%lf%lf",&a,&b,&c);
  8.     for(x1=-20;x1<=20;x1+=0.01)
  9.     {
  10.        
  11.         for(x2=-20; x2<=20;x2+=0.01)
  12.         if(fabs(x1+x2+b/a)<=0.001 && fabs(x1*x2-c/a)<=0.001)
  13.         {
  14.         if(x1==x2) printf("%lf\n",x1);
  15.         else printf("%lf %lf\n",x1,x2);
  16.         fl=1;
  17.        
  18.         }
  19.         if(fl) break;
  20.     }
  21.     return 0;
  22. }

Объяснение кода листинга программы

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

  1. Ввод значений a, b и c с помощью функции scanf.
  2. Создание переменных x1 и x2 для хранения найденных корней.
  3. Создание переменной fl для отслеживания нахождения корней.
  4. Использование двух вложенных циклов для перебора всех возможных значений x1 и x2 от -20 до 20 с шагом 0.01.
  5. Проверка условия: если модуль (абсолютное значение) разности x1+x2+b/a меньше или равен 0.001, и модуль разности x1*x2-c/a меньше или равен 0.001, то это значит, что найдены корни уравнения.
  6. Если x1 и x2 равны, то выводится значение x1.
  7. Если x1 и x2 не равны, то выводятся значения x1 и x2.
  8. Переменная fl устанавливается в 1, чтобы выйти из внутреннего цикла.
  9. Если fl равно 1, то происходит выход из внешнего цикла с помощью оператора break.
  10. Программа завершается возвратом значения 0.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 3.929 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы