intelliSense: ни один экземпляр перегруженной функции «sqrt» не соответствует списку аргументов. Типы аргументов: (double *)

0

Что не так с этим кодом? !!! Я делаю программу, пытающуюся решить квадратичное уравнение, и вижу эту ошибку и не могу ее решить, я должен измениться на float или что?

#include<stdio.h>
#include<conio.h>
#include<math.h>

void solve_quadratic(double a,double b,double c ,double *d ,double *r1,double *r2);
int main (void)
{
double x,y,z;
double root1,root2;
double desc;
printf("Enter the value of a:  ");
scanf("%lf",&x);
printf("Enter the value of b :  ");
scanf("%lf",&y);
printf("Enter the value of c :   ");
scanf("%lf",&z);

solve_quadratic(x,y,z,&desc,&root1,&root2);
if (desc<0)
{
    printf("No Result !!!");
}
else if (desc>0)
{
    printf("The value of the first root = %f \n",root1);
    printf("The value of the second root = %f  \n",root2);
}
getch();
return 0;

}

void solve_quadratic(double a,double b,double c ,double *d ,double *r1,double *r2)
{
*d=b*b-4*a*c;
if (d>=0)
{
    *r1=(-b+sqrt(d))/(2*a);
    *r2=(-b-sqrt(d))/(2*a);
}
}
Теги:
math.h

1 ответ

1
Лучший ответ
*r1=(-b+sqrt(d))/(2*a);     <<<< d is pointer not double.

Вы передаете указатель на double to sqrt. Должен быть :-

*r1=(-b+sqrt(*d))/(2*a);
  • 0
    так что мне делать?
  • 0
    @TadrosEbrahim: именно то, что ответ говорит вам делать. Используйте *d , сам double , а не d , указатель на него.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню