Giải phương trình bậc 2 bị sai kết quả

Cho em hỏi là em code như vậy, nó vẫn chạy nhưng lại tính ra kết quả sai. Mọi người xem giúp em xem em có code sai chỗ nào k ạ. CẢM ƠN MỌI NGƯỜI NHIỀU.

#include <stdio.h>
int main(){
	int soA,soB,soC,delta;
	
	printf("xin moi nhap so a: ");
	scanf("%d",&soA);
	printf("xin moi nhap so b: ");
	scanf("%d",&soB);
	printf("xin moi nhap so c: ");
	scanf("%d",&soC);
	delta=(soB*soB)-(4*soA*soC);
	
	printf("delta = %d\n",delta);
	
	if(delta>0){
		int x1,x2;
		x1=((-soB-sqrt(delta))/(2*soA));    // âm sô B -
		x2=((-soB+sqrt(delta))/(2*soA));
		printf("pt co 2 no\n");
		printf("x1= %d\n",x1);
		printf("x2= %d",x2);
		
	}else if(delta<0){
		printf("pt  vo no");
		
	}else{
		int x;
		x=-soB/(2*soA);
		printf("pt co 1 no\n");
		printf("x= %d",x);
	}
	return 0;
}

Vấn đề là bạn dùng kiểu dữ liệu int. Căn bậc 2 (sqrt()) và kết quả là số thực.

4 Likes

dùng int k được à bạn

int chỉ lưu được dữ liệu kiểu nguyên.

Vậy nên khi bạn gán 3.4 cho biến kiểu int thì nó sẽ chỉ lấy phần nguyên của số đó (tức là 3). :slight_smile:

:point_right: Không. :slight_smile:

3 Likes

thế dùng float à :heart::heart::heart:

Rõ thế còn gì, phải dùng float thôi. Còn không thì bạn có thể dùng ép kiểu :))

3 Likes

ok. CẢM ƠN NHIỀU Ạ. :heart::heart::heart:

CẢM ƠN NHIỀU Ạ. :heart::heart::heart:

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?