30/09/2018, 20:08
các bạn chỉ mình chỗ sai với ạ, pt bậc 3, đa tạ!
#include<stdio.h>
#include<conio.h>
#include<math.h>
void main(){
float a,b,c,d;
float i=-100;
printf("a= ");
scanf("%d",&a);
printf("
b= ");
scanf("%d",&b);
printf("
c= ");
scanf("%d",&c);
printf("
d= ");
scanf("%d",&d);
printf("
giai pt ax3+bx2+cx+d=0");
do{
if(a*pow((float)i,3)+b*pow((float)i,2)+c*i+d==0){
printf("
pt tro thanh (x-%f)(%dx2+(%d+%f%d)x+(%d+%f(%d+%f%d)))",i,a,b,i,a,c,i,b,i,a);
break;
}
else i++;
} while(-100<=i && i<=100);
float m,n;
m=b+i*a;//b
n=c+i*(b+i*a);//c
if(a==0 && m==0) printf("pt co nghiem x= %.1f",i);
else if((a==0 && m!=0) || (a==0 && m!=0 && n==0)) printf("
pt co nghiem la x1= %.1f x2= %.1f",-n/m,i);
else if (a==0 && m==0 && n==0 ) printf("
pt co vo so nghiem");
else{
float delta,x1,x2,x3;
delta=pow((float)m,2)-(4*a*n);
x1=(-m+sqrt(delta))/(2*a);
x2=(-m-sqrt(delta))/(2*a);
x3=-m/(2*a);
if(delta>0) printf("
pt co 3 nghiem pb x1= %.1f x2= %.1f x3= %.1f",x1,x2,i);
else if(delta<0) printf("
co 1 nghiem x= %.1f",i);
else printf("
pt co 2 nghiem x1= %.1f x2= %.1f",x3,i);
}
getch();
}
Bài liên quan
Vì số thực có sai số nên việc so sánh ==0 hầu như là sai. Ta nên viết 1 hàm equal cho số thực trong TH này