⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 key01_6.cpp

📁 该包是数据结构的实验软件,来源于合肥工业大学人工智能与数据挖掘实验室,用来实现数据结构.
💻 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 + -