30/09/2018, 18:35
Cách đổi hệ nhị phân sang thập lục phân?
Đây là code của mình, giải hoài không ra mong mọi người chỉ bảo
#include <iostream>
#include <cstring>
using namespace std;
main()
{
char a[] = "0123456789ABCDEF";
char b[] = "111101111";
int n = 8, i, j, temp = 0, h[20], m = 0;
cout << "strlen(b) = " << strlen(b) << endl;
for(i = strlen(b) - 1; i > 0; i = i - 4)
{
for(j = i - 3; j <= i; j++)
{
if(b[j] == '1')
{
temp = temp + n;
n = n / 2;
}
else
n = n / 2;
}
cout << a[temp] << endl;
}
}
Bài liên quan
Bạn quên khởi tạo lại n = 8 rồi
Thì sau vòng lặp đầu tiên, n không bằng 8 nữa nên kq tính temp bị sai. Bạn phải gán n = 8 một lại ở trước for(j=…) là đc
Mình cũng vừa có suy nghĩ như vậy, nhưng ghi vào vẫn không ra không hiểu sai chỗ nào
Thiếu temp = 0 cùng chỗ với n = 8. và i chạy tới 0 là ok
Nhưng có vẻ kq in ra bị ngược
mình xài đếm đảo lại được, nhưng ý bạn nói mình vẫn chưa hiểu phải sữa chỗ nào
chỗ i chay tới 0
temp bạn gán = temp + n
Thì khi chạy lại vòng lặp, giá trị của temp vẫn như cũ. Tức chưa được gán lại bằng không. NÊn nó cứ cộng dồn vô từ đó bạn không in ra đúng kq được
Và cái vòng for (i=… i>=0) chứ ko phải i > 0 thôi
rs lại temp = 0; thì nó ra kq là 0 0 0 hết r bạn ơi
dùng theo code của mình thì phải sữa như thế nào v
http://ideone.com/X3PoUn ‘3’
okay thanks bạn , nhưng chắc phải kêu = anh, cảm ơn anh em sn 96 à hihi
cảm ơn anh Gió hihi
for(j = i - 3; j <= i; j++)
sửa thành
for(j=max(0,i-3);j<=i;j++)
tránhj<0
j
không bắt đầu từi-3
thìn
cũng không bắt đầu từ 8 dcCảm ơn anh!!