01/10/2018, 08:53

Cùng một bài Dev-C++ chạy báo sai còn Codeblock chạy đúng?

Cùng một code tìm số chính phương này nhưng Dev-C++ chạy báo sai còn dùng Codeblocks chạy đúng. Em ngồi check lại thấy đúng là code này sai chỗ sqrt nhưng tại sao Codeblocks vẫn chạy đúng vậy ạ @@ Em c.ơn ạ.

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

int isSquare(int);
int main(void){
    int a,b,i;
    printf("Nhap khoang a b: ");
    scanf("%d %d",&a,&b);
    printf("Cac so chinh phuong trong khoang [%d,%d]: ",a,b);
    for(i=a;i<=b;i++)
        if(isSquare(i))
           printf("%d ",i);
}

int isSquare(int n){
    if(n==sqrt(n)*sqrt(n))
        return 1;
    else
        return 0;
}
Phan Nhật Khánh Huy viết 11:01 ngày 01/10/2018

Bạn thử sửa lại thành n==(int)(sqrt(n)*sqrt(n)) rồi chạy thử trên Codeblocks xem kết quả đúng không

rogp10 viết 11:06 ngày 01/10/2018

Vì tính toán số thực đấy.

Có thể tránh bằng cách if ((x = sqrt(n), x*x) == n); Sợ nó tính “xêm xêm” kiểu sqrt(225.0) ?= 14.998… gì thôi.

Quang Trường Phạm viết 10:58 ngày 01/10/2018

Mình thấy và mình đã ép kiểu như vậy r. Vẫn đúng mà không ép kiểu vẫn chạy đúng =.=

Quang Trường Phạm viết 11:02 ngày 01/10/2018

Mình cũng không hiểu tại sao nó lại như vậy. Dùng codeblocks thích hơn devC nhưng mà cái kiểu code sai vẫn đúng này thì… bó tay r

viết 10:55 ngày 01/10/2018

chạy đúng là sao? @_@ ví dụ nhập vào 100 130 nó in ra 100 với 121 thôi à?

Quang Trường Phạm viết 10:59 ngày 01/10/2018

Nó in ra 100 và 121 chứ. nghĩa là nó tìm đúng số chính phương ý bạn

viết 11:09 ngày 01/10/2018

CB chạy ra 100 121 với code trên còn Dev-C++ ra số khác à? Làm gì có chuyện đó, cả 2 đều chạy sai chứ @_@

Bài liên quan
0