Tình hình là đệ chạy được cái nhị phân nhưng còn bát phân thì không biết sai chổ nào cả
e chạy số 9 thì ra kết quả đúng,nhưng nhập 100 thì lại sai.nó ra là 1 4 1 4 1 trong khi đó 1 4 4 mới đúng.
Huynh nào Pro giúp đệ với!!!:kiss:
Tks các huynh trước :go:
e chạy số 9 thì ra kết quả đúng,nhưng nhập 100 thì lại sai.nó ra là 1 4 1 4 1 trong khi đó 1 4 4 mới đúng.
Huynh nào Pro giúp đệ với!!!:kiss:
Tks các huynh trước :go:
PHP Code:
#include "stdafx.h"
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <malloc.h>
void xuat(int *A,int n)
{
for(int i=n-1;i>=0;i--)
printf("%2d",A[i]);
}
long nhiphan(int x,int *A,int &dem)
{
int a;
a=x/2;
A[dem]=x-2*a;
if(a==0)
{
dem++;
return 0;
}
else
{
dem++;
nhiphan(a,A,dem);
}
}
void batphan(int x,int *A)
{
int dem=0,i;
nhiphan(x,A,dem);
while(dem%3!=0) // them 0 vao cho du~ 3 so vd nhu 1 0 0 1 thanh 0 0 1 0 0 1
{
dem++;
A[dem-1]=0;
}
for(i=dem-1;i>=2;i=i-3) //e dung quy tac doi tu nhi phan sang bat phan 000 la 0, 001 la 1,010 la 2...
{
if(A[i]+A[i-1]+A[i-2]==0)
printf("0");
if(A[i]+A[i-1]+A[i-2]==3)
printf("7");
if(A[i]+A[i-1]+A[i-2]==1)
{
if(A[i]==1)
printf("4");
if(A[i-1]==1)
printf("2");
else
printf("1");
}
if(A[i]+A[i-1]+A[i-2]==2)
{
if(A[i]==0)
printf("3");
if(A[i-1]==0)
printf("5");
else
printf("6");
}
}
}
void main()
{
int *A;
A=(int*)malloc(100);
int x,dem=0;
printf("nhap x dy kung");
scanf("%d",&x);
nhiphan(x,A,dem);
printf("so %d chuyen sang he nhi phan la: ",x);
xuat(A,dem);
printf("so %d chuyen sang he bat phan la: ",x);
batphan(x,A);
getch();
}
Comment