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));    
    }    
  
}

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

1 Like

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

1 Like

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

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

  • 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

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

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

#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();
}
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?