01/10/2018, 16:27
Code tìm số chính phương bị lỗi
Em chạy đúng các so khác nhưng đến số 25 không được ạ…vd:số 0,1,16,36
http://codepad.org/iYGHpKrn
#include<iostream>
#include<math.h>
using namespace std;
/*
4. Kiểm tra 1 số nguyên dương x có phải là số chính phương hay không ?
Định nghĩa số chính phương: Là số mà kết quả khai căn bậc 2 của nó
là 1 số nguyên. vd: 0, 1, 4, 9, 16, 25, 36
*/
int main()
{
int x;
cout<<"
nhap x: ";
cin>>x;
int t=sqrt(x);
cout<< t<<endl;
//cout<<" x ="<<x<<" pow ="<<pow(t,2);
if(x==pow(t,2))
{
cout<<"
so "<<x<<" la so chinh phuong";
}
return 0;
}
Bài liên quan
Bởi vì bạn dùng
pow
nó tính không chính xác đâu (phép toán số thực), chắc là 24.99… gì đó. Còn nhân hai số nguyên là không có lẻ.Vả lại,
x
sẽ bị đổi thành số thực, mà so sánh số thực không nên dùng==
vì nó không chính xác.hàm pow(), sqrt() là hàm trả về giá trị double
double pow(double x, double y)
double sqrt(double x)
nên bạn ép kiểu khi dùng, hoặc khai báo biến dưới dạng double.
Em nghịch ngợm tý , bác đừng chê cười
Code