Một cách nhân độc đáo (Phần 2)

Đây là đoạn code do Nhung viết lên, mọi người xem thử nhé.



#include<iostream.h>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define max 100
/****/
void xuatfile(char *fn);
void docfile(char *fn,int *&a,int *&b,int &n,int &m);
void nhan(char *fn,int *&a,int *&b,int **&mt,int n,int m);
void ghifile(char *fn,int *&a,int n);
/****/
void main()
{
char *fn="bignum_in.txt";
char *fm="bignum_out.txt";

int *a=new int[max],*b=new int[max];// ab co toi da 100 chu so
int n=0,m=0;//la so chu so cua a,b doc tu file,khoi tao =0
docfile(fn,a,b,n,m);
//tao ma ram luu ket qua nhan tung chu so cua voi b
int **mt;
mt=new int *[n];
for(int i=0;i<n;i++)
mt[i]=new int [m];
nhan(fm,a,b,mt,n,m);
//thu hoi mang dong
delete a;
delete b;
for(i=0;i<m;i++)
delete []mt[i];
delete[]mt;
//xuat ket qua
xuatfile(fm);
}
/****/
void xuatfile(char *fn)
{
FILE *f;
char x;
f=fopen(fn,"r");
while(fscanf(f,"%c",&x)&&!feof(f))
cout<<x;
fclose(f);
}
void docfile(char *fn,int *&a,int *&b,int &n,int &m)
{
FILE *f;
f=fopen(fn,"r");
char x;
int i=0,j=0;
while(fscanf(f,"%c",&x)&&!feof(f))
{
if(x=='n')
while(fscanf(f,"%c",&x)&&!feof(f))
b[j++]=x-'0';
else
a[i++]=x-'0';
}
n=i;
m=j;
fclose(f);
}
void ghifile(char *fn,int *&a,int n)
{
FILE *f;
f=fopen(fn,"w");
char ch;
int i=n-1;
while(i>0&&a[i]==0)
i--;
for(;i>=0;i--)
{

ch=a[i]+'0';
fprintf(f,"%c",ch);
}
fclose(f);
}
void nhan(char *fn,int *&a,int *&b,int **&mt,int n,int m)
{
//mang kq luu ket qua tam thoi
int *kq=new int[n*m];
int k=0,i,j;
for(i=0;i<n;i++)
for(j=0;j<m;j++)
mt[i][j]=a[i]*b[j];
//xu ly ma tran
kq[k++]=mt[n-1][m-1];
i=n-1;
for(j=m-2;j>=0;j--)
{
int a=i,b=j;
kq[k]=0;
while(a>=0&&b<m)
{
kq[k]=kq[k]+mt[a][b];
a--;
b++;
}
k++;
}
if(j<0)
i--;
for(;i>0;i--)
{
int a;
kq[k]=0;
if(j=m-1&&i<=0)
m=m-1;
for(a=i,j=0;a>=0&&j<m;a--,j++)
kq[k]=kq[k]+mt[a][j];
k++;

}
kq[k]=mt[0][0];
k++;
//xu ly mang
int nho=0;
for(i=0;i<k;i++)
{
int t;
t=kq[i]+nho;
nho=t/10;
kq[i]=t%10;
}
if(nho!=0)
kq[k++]=nho;
//ghi ket qua vao file
ghifile(fn,kq,k);
}


Nhận xét

  1. Đã hơn 1 năm trôi qua, mọi thứ đều thay đổi, nhưng có lẽ trong lòng mình vẫn còn thích bạn đấy Nhung. Bạn là người gây ra cho T nhiều chuyện bực tức nhưng cũng là người T vẫn luôn cố gắng vượt qua. Nhờ có bạn mà năm 2 mình học tốt khá nhiều. Mình luôn có ý tưởng sáng tạo từ bạn và Nỡ.
    Luôn mong ước có 1 sự thay đổi nhưng có lẽ nó khó có thể xảy ra. Mình chắc chắn như vậy. Dù sao cũng rất vui vì làm quen với bạn.

    Trả lờiXóa

Đăng nhận xét

Bài đăng phổ biến từ blog này

Kinh nghiệm tạo biểu đồ Use Case

PHÉP TOÁN XOR

Phần mềm hỗ trợ vẽ bản đồ tư duy trên máy tính

Power Designer 12.5