01/10/2018, 12:12

Không hiểu tại sao chương trình giải phương trình bậc hai luôn có nghiệm kép

Em tự code bài này và không hiểu tại sao nó cứ chăm chăm kết quả là phương trình có nghiệm kép. Em kiểm tra thấy nó k có lỗi và cũng k khác với bài giải. Nó bị vấn đề ở đâu ạ

#include<stdio.h>
#include<math.h>
  int main()
  {
  	float a,b,c,d;
  	printf("nhap he so cua phuong trinh bac 2 a,b,c= ");
  	scanf("%d%d%d",&a,&b,&c);
  
  	if(a==0)
    {
  		if(b==0)
  		{
  			if(c==0)
  				printf("phuong trinh vo nghiem");
  				else
  				printf("phuong trinh co vo so nghiem");
  				}
  				}
  				else
  				 
    
    {
        d=b*b-4*a*c;
        if (d<0)
            printf("Phuong trinh vo nghiem!!!");
        else if (d==0)
            printf("Phuong trinh co nghiem kep la: %f",-b/(2*a));
        else
            printf("Phuong trinh co 2 nghiem phan biet la: %f,%f",(-b+sqrt(d))/(2*a),(-b-sqrt(d))/(2*a));    
    }    
  
}
rogp10 viết 14:13 ngày 01/10/2018

Câu scanf sai. (oops https://repl.it/NW4G )

X viết 14:26 ngày 01/10/2018

Đóng mở ngoặc lộn xộn không biết đâu mà nhìn.

Tuấn Anh viết 14:24 ngày 01/10/2018

có giải pháp không ạ. À anh ơi làm sao để nó hết dính chùm anh

Tuấn Anh viết 14:22 ngày 01/10/2018

tại em mới bắt đầu nên nó hơi lộn xộn khó nhìn anh ạ

HK boy viết 14:25 ngày 01/10/2018
  • Hãy đóng mở ngoặc 1 cách tử tế và chỉn chu ngay từ bây giờ, và đừng lấy lí do “mới học” ở đây.

  • Bạn thử tự debug bằng cách thêm dòng printf("%f %f %f %f", a, b, c, d) vào sau dòng

d=bb-4a*c;

scanf("%d%d%d",&a,&b,&c);

a, b, c bạn khai báo kiểu float mà đọc vào với “%d”?

Câu scanf sai. Viết như vậy ko đọc được nó dính chùm.

Hình như viết như thớt không ảnh hưởng gì đâu mà anh?

Thang Nv viết 14:22 ngày 01/10/2018
#include<stdio.h>
#include<math.h>
main()
{
  float a,b,c,delta;
  
  printf("Nhap a, b, c = ");
  scanf("%f %f %f", &a, &b, &c);
  
  if (a==0)
  {
         if (b==0)
         {
                  if (c==0)
                  {
                         printf("PT Co Vo So Nghiem");
                  }
                  else
                  {
                         printf("Phuong Trinh Vo Nghiem");
                  }
         }
         else
         {
                   printf("Nghiem Cua Phuong Trinh la x = %f",-c/b);

         }

  }
  
  else
  {
         delta=b*b-4*a*c;
         if (delta < 0)
         {
                   printf("Phuong Trinh Vo Nghiem");
         }
  		 else if (delta== 0)
         {
                   printf("Phuong Trinh Co Nghiem Kep x = %f",(-b)/(2*a));
         }
         else
         {
                   printf("Phuong Trinh Co 2 Nghiem Phan Biet");
                   printf("\nx1 = %f",((-b)+sqrt(delta))/(2*a));
                   printf("\nx2 = %f",((-b)-sqrt(delta))/(2*a));
         }
  }
  fflush(stdin);
  getchar();
}
Bài liên quan
0