
Cho một tệp văn bản input.txt chứa các phần tử nguyên không âm, các phần tử cách nhau ít nhất một dấu cách trống hoặc ít nhất một dấu xuống dòng. Viết chương trình đổi các số nguyên đọc ra từ tệp input.txt thành xâu nhị phân và xâu hexa tương ứng. Kết quả đưa vào tệp văn bản output.txt theo dạng: n ----> xâu nhị phân -----> xâu hexa (1 điểm)
Tuesday, August 26, 2014
Cho một tệp văn bản input.txt chứa các phần tử nguyên không âm, các phần tử cách
nhau ít nhất một dấu cách trống hoặc ít nhất một dấu xuống dòng. Viết chương trình đổi các
số nguyên đọc ra từ tệp input.txt thành xâu nhị phân và xâu hexa tương ứng. Kết quả đưa
vào tệp văn bản output.txt theo dạng:
n ----> xâu nhị phân -----> xâu hexa (1 điểm)
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <math.h>
void doctep(int a[],int *n,FILE
*l)
{
int i=0;
while
(!feof(l))
{
fscanf(l,"%d",&a[i]);
i++;
}
*n=i;
}
void xemmang(int a[],int n)
{
int i;
printf("\n");
for
(i=0;i<n;i++)
printf("
%d ",a[i]);
printf("\n");
}
char *nhiphan(int n)
{
int i=0,j,k,x;
char s[33],d[3]="01",tg;
x=n;
while
(x!=0)
{
k=x%2;
s[i]=d[k];
i++;
x=x/2;
}
j=i;
for(i=0;i<(j/2);i++)
{
tg=s[i];
s[i]=s[j-i-1];
s[j-i-1]=tg;
}
s[j]=NULL;
return
&s[0];
}
char *chuanhoa(char s[])
{
int
i,j,n=strlen(s)-1,k;
char
s1[100];
if
((n+1)%4==0) return &s[0];
k=((n+1)/4+1);
for(i=0;i<=n;i++)
s1[k*4-i]=s[n-i];
for(i=0;i<(k*4-n);i++)
s1[i]='0';
s1[k*4+1]=NULL;
return
&s1[1];
}
char *hecxa2(int n,FILE *l)
{
int
i,j,k,x=0;
char
s[65],np1[65],np[65],d[17]="0123456789ABCDEF";
strcpy(np1,nhiphan(n));
fprintf(l,"%d ==> %s
===>",n,np1);
strcpy(np,chuanhoa(np1));
n=strlen(np);
for
(i=0;i<n;i+=4)
{
k=0;
for
(j=0;j<4;j++) if (np[i+j]=='1') k+=pow(2.0,3-j);
s[x]=d[k];
x++;
}
s[x]=NULL;
return
&s[0];
}
void ghihecxa(int a[],int n,FILE
*l)
{
int i;
char
hx[33];
for
(i=0;i<n;i++)
{
strcpy(hx,hecxa2(a[i],l));
fprintf(l,"%s\n",hx);
}
}
int main()
{
int
n,a[1000];
FILE *u,*v;
v=fopen("c:\\output.txt","wt");
u=fopen("c:\\input.txt","rt");
doctep(a,&n,u);
printf("\nMang
du lieu doc ra co %5d phan tu",n);
xemmang(a,n);
ghihecxa(a,n,v);
fclose(u);
fclose(v);
printf("\n\nHoantat");
getch();
}

All comments [ 0 ]
Your comments