📄 key01_6.cpp
字号:
//{ Test01_6 } { Big number: times }
#include"seqlists.h"
const int maxlen=18;
unsigned char s[20];
SeqList A,B,C;
void StrToSeqList(string s,SeqList& A)
{ int i,L;
boolean suc;
unsigned char s1[20];
Ltrim(s,s1);
unsigned char s2[20];
Rtrim(s1,s2);
strcpy(s,s2);
L=strlen(s);
i=L-1;
suc=true;
while ( (i>=0)&&suc)
if (s[i]>='0'&&s[i]<='9')
{ A.data[L-i]=s[i]-'0';
i=i-1;
}
else
suc=false;
if (!suc)
Error_exit("There have illeage char in string");
A.Last=strlen(s);
for (i=A.Last+1;i<=SeqList_maxsub(A);i++)
A.data[i]=0;
}
void SeqListToStr(SeqList& A,string s)
{
int i;
boolean suc;
strcpy(s,"");
for (i=A.Last;i>=1;i--)
s[A.Last-i]=A.data[i]+'0';
}
/*procedure StrToSeqList(s:string; var A:Seqlist);
var i,L:integer; suc:boolean;
begin s:=Ltrim(Rtrim(s)); L:=length(s); i:=L; suc:=true;
while (i>=1) and suc do
if s[i] in ['0'..'9']
then begin A.data[i]:=ord(s[L-i+1])-ord('0'); i:=i-1 end
else suc:=false;
if not suc
then error_exit('There have illeage char in string');
A.Last:=Length(s);
for i:=A.Last+1 to SeqList_MaxSub(A) do A.data[i]:=0;
end;
procedure SeqListToStr(var A:Seqlist; var s:string);
var i:integer; suc:boolean;
begin s:='';
for i:=A.Last downto 1 do
s:=s+chr(A.data[i]+ord('0'));
end;
*/
void TimesSeqList(SeqList& A,SeqList& B,SeqList& C)
{int ia,ib,ic,S,Carry;
for (ib=1;ib<=B.Last;ib++)
{ Carry=0;
cur_SeqList_elmn_onoff(B,ib);
for (ia=1;ia<=A.Last;ia++)
{
cur_SeqList_elmn_onoff(A,ia);
getch();
ic=ia+ib-1;
S=C.data[ic]+A.data[ia]*B.data[ib]+Carry;
C.data[ic]=S%10;
Carry=S/10;
display_SeqList_elmn(C,ic);
cur_SeqList_elmn_onoff(C,ic);
getch();
cur_SeqList_elmn_onoff(A,ia);
cur_SeqList_elmn_onoff(C,ic);
}
if (Carry>0)
{ set_SeqList_Last(C,ib+A.Last);
if (C.Last>maxlen) Error_exit("Overflow ");
C.data[C.Last]=Carry;
display_SeqList_elmn(C,C.Last);
cur_SeqList_elmn_onoff(C,C.Last);
}
else
set_SeqList_Last(C,ib+A.Last-1);
cur_SeqList_elmn_onoff(B,ib);
}
}
void TimesStringNum(string s1,string s2,string s3)
{
StrToSeqList(s1,A);
StrToSeqList(s2,B);
clear_SeqList(C);
move_SeqList_mid(A,getmaxx()/2,60);
move_SeqList_mid(B,getmaxx()/2,180);
move_SeqList_mid(C,getmaxx()/2,300);
gotoxy(1,1);
cout<<s1<<'x'<<s2<<'=';
TimesSeqList(A,B,C);
SeqListToStr(C,s3);
cout<<s3;
Wait();
}
main()
{
set_SeqList_dir(A,"A",horizon,-1,1,maxlen);
set_SeqList_dir(B,"B",horizon,-1,1,maxlen);
set_SeqList_dir(C,"C",horizon,-1,1,maxlen);
TimesStringNum("85","85", s);
TimesStringNum("567892","1234567", s);
TimesStringNum("32123451234567","13332345678", s);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -