01/10/2018, 13:26

IDE khác nhau cho ra kết quả khác nhau

Mình có code đoạn test số amstrong cụ thể là số 153. Mà chẳng là khi test code bằng c free 5.0 hoặc code block thì nó báo sai còn test bằng visual studio thì nó lại báo đúng.
Cụ thể mình có kiểm tra từng dòng code thì thấy đến đoạn s=pow(5,3)=124 (ở vòng lặp lần 2) trong khi phải bằng 125 mới đúng. Mn chỉ mình fix như thế nào với

void at(int n) { 
	long sum=0,m=n,k,t;
	k=3;
	printf("k= %d
",k);printf("k= %d
",k);
	while(m>0)
	{	
		printf("******************
");
		t=m%10;
		printf("t=%d
",t);
		int s=pow(t,k);	/*Khi t=5, pow(5,3) =124 ?????? */
		printf("%d^%d=%d
",t,k,s); 
		sum+=pow(t,k);
		printf("Sum= %d",sum);
		m/=10;	
		printf("
");
	}
}
int main ()
    {
       at(153);
    }
HK boy viết 15:33 ngày 01/10/2018

pow(a, b) sẽ cho kết quả là số thực.

int s=pow(t,k);

Bạn viết thế này tức là bạn đang ép kiểu cho pow(t, k) thành 1 số nguyên, s có giá trị là phần nguyên của pow(i, k). Nhưng đời không như là mơ, kết quả của pow(t, k) khi t = 5, k = 3 là 1 số như kiểu 124.99999999902 chẳng hạn, bạn lấy phần nguyên của nó -> ra 124 thay vì 125.

Bạn nên viết hàm power riêng.

int power(int, int) // né cái tên pow ra

Còn kết quả khác nhau mỗi IDE khác nhau thì không quan trọng lắm, quan trọng là code bạn sai.

Khắc Tuấn viết 15:36 ngày 01/10/2018

vậy là phải viết hàm power riêng dùng for ạ :v

HK boy viết 15:41 ngày 01/10/2018

vậy là phải viết hàm power riêng dùng for ạ :v

Yeah.

[spoiler]này thì 20 char[/spoiler]

Khắc Tuấn viết 15:38 ngày 01/10/2018

ok mình làm được rồi. cám ơn bạn nhiều. Mà cho mình hỏi nốt cái này
có đoạn code tính power
int power(int a,int b) {
int power=1;
for(int i=1;i<b;i++)
power*=a;
return power;
}
cái này thì mình cũng ép kiểu int cho nó thì khác gì cái int s=pow() nãy ạ

HK boy viết 15:31 ngày 01/10/2018

Cái này đâu phải ép kiểu int, bạn cho nó là giá trị int luôn ấy chứ.

for(int i=1;i<b;i++)

i <= b chứ.

Hung viết 15:42 ngày 01/10/2018

Warp hàm round, don’t reinvent the wheel

stackoverflow.com
Teo Chuen Wei Bryan

Rounding up and down a number C++

c++, cmath, ceil
asked by Teo Chuen Wei Bryan on 08:07PM - 07 Oct 16

Bài liên quan
0