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

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

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.

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 =.=

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 :expressionless:

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

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

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ứ @_@

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