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

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

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

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

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

textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
void qvadr(float a, float b, float c){ float d,x1,x2;
        d=b*b-4*a*c;
        if (d>0) {x1=(-b+sqrt(d))/(2*a);printf("%f",x1);
                  x2=(-b-sqrt(d))/(2*a);printf("%f",x2);
                  }
        if (d=0) {x1=(-b+sqrt(d))/(2*a);printf("%f",x1);  }
        if (d<0) printf("net kornei");
    }
int main()
{   float a,b,c;
    scanf("%f%f%f",&a,&b,&c);
    qvadr(a,b,c);
    system("PAUSE");
    return 0;
}

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

  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
Похожие ответы