Функция вычисления корней квадратного уравнения - C (СИ)

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

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

Вот выполняю задание: "Написать функцию вычисления корней уравнения a*x*x + b*x + c = 0. Значение квадратного корня от x возвращает функция стандартной библиотеки (необходимо включить в программу math.h) double sqrt(double x)" Программа работает, но считает коряво, точнее вообще не правильно.
Листинг программы
  1. double qvadr(double a, double b, double c);
  2. double qvadr(double a, double b, double c){ double d,x1,x2;
  3. d=b*b-4*a*c;
  4. if (d>0) {x1=(-b+sqrt(d))/(2*a);printf("%f",x1);
  5. x2=(-b-sqrt(d))/(2*a);printf("%f",x2);
  6. }
  7. if (d=0) {x1=(-b+sqrt(d))/(2*a);printf("%f",x1); }
  8. if (d<0) printf("net kornei"); return x1;
  9. }
  10. int main()
  11. { double a,b,c;
  12. scanf("%f%f%f",&a,&b,&c);
  13. printf("%d",qvadr(a,b,c));
  14. system("PAUSE");
  15. return 0;
  16. }
как я понял принтф в функции не работает? тогда как вывеси два и более значений? Помогите исправить ошибки, прочитал несколько статей но конкретных ответов не нашел.

Решение задачи: «Функция вычисления корней квадратного уравнения»

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <math.h>
  4. void qvadr(float a, float b, float c){ float d,x1,x2;
  5.         d=b*b-4*a*c;
  6.         if (d>0) {x1=(-b+sqrt(d))/(2*a);printf("%f",x1);
  7.                   x2=(-b-sqrt(d))/(2*a);printf("%f",x2);
  8.                   }
  9.         if (d=0) {x1=(-b+sqrt(d))/(2*a);printf("%f",x1);  }
  10.         if (d<0) printf("net kornei");
  11.     }
  12. int main()
  13. {   float a,b,c;
  14.     scanf("%f%f%f",&a,&b,&c);
  15.     qvadr(a,b,c);
  16.     system("PAUSE");
  17.     return 0;
  18. }

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

  1. Включаем необходимые заголовочные файлы для работы с математическими функциями и вводом/выводом данных
  2. Определяем функцию qvadr, которая принимает три аргумента типа float - a, b и c. Эти переменные соответствуют коэффициентам квадратного уравнения ax^2 + bx + c = 0
  3. Внутри функции вычисляем дискриминант уравнения по формуле d = b^2 - 4ac
  4. Используем условный оператор if для проверки значения переменной d. Если d больше нуля, то уравнение имеет два корня и мы вычисляем их значения, используя формулы x1 = (-b + sqrt(d))/(2a) и x2 = (-b - sqrt(d))/(2a). Затем выводим значения корней на экран
  5. Если d равно нулю, то уравнение имеет один корень и мы выводим его значение, используя формулу x1 = (-b + sqrt(d))/(2a). В этом случае второй корень не вычисляем, так как он равен первому корню
  6. Если d меньше нуля, то уравнение не имеет действительных корней и мы выводим на экран сообщение net kornei
  7. В функции main() объявляем три переменные типа float a, b и c и считываем их значения с помощью функции scanf
  8. Вызываем функцию qvadr, передавая ей значения переменных a, b и c
  9. Выводим на экран сообщение Press any key to continue... с помощью функции system(PAUSE)
  10. Возвращаем 0 из функции main(), что означает успешное выполнение программы

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


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

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

12   голосов , оценка 4.083 из 5

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

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

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