چگونه یک عدد صد رقمی را در سه رقمی با استفاده از آرایه ها ضرب کنیم.
جواب:
در حالت عادی ضرب عددی صد رقمی در سه رقمی باعث ایجاد خطای Over Flow می گردد. جهت برطرف نمودن این مشکل ما از الگوریتم زیر استفاده می نمائیم.
ابتدا باید عدد 100 رقمی و 3 رقمی گرفته شود سپس ارقام آن به طور جداگانه در خانه های آرایه قرار گیرد. سپس عملیات ضرب را آغاز می کنیم.
Option Base 1 ' باعث می شود اندیس آرایه از یک شروع شود
F=false
Help2[1]=0
Help3[1]=0
Help3[2]=0
I=0
Temp=Val(InputBox("Enter First Number: ")) ' عدد صد رقمی را وارد کنید
Do While temp>0
I=i+1
Hundred[i]=Temp mod 10
Temp=Temp\10
Loop
Indx=0
Temp=Val(InputBox("Enter Second Number: ")) 'عدد سه رقمی را وارد کنید
Do While Indx<=3
Indx=Indx+1
Three[Indx]=Temp mod 10
Temp=Temp\10
Loop
For k=1 to 3
For j=1 to i
If overf=true then
Temp=(Three[k]*Hundred[j])+sec
Overf=false
Else:
Temp=Three[k]*Hundred[j]
End if
Select case k
Case 1:
If (Temp>9) and (j
Help1[j]=Temp mod 10
Sec=temp\10
Overf=True
Else if (Temp>9) and (j=i) then
Help1[j]=temp mod 10
Help1[j+1]=temp\10
Overf=false
Else
Help1[j]=temp
End If
Case 2:
If (Temp>9) and (j
Help2[j+1]=Temp mod 10
Sec=Temp\10
Overf=true
Else if (Temp>9) and (j=i) then
Help2[j+1]=Temp mod 10
Help2[j+2]=Temp\10
Overf=False
Else
Help2[j+1]=Temp
End If
Case 3:
If (Temp>9) and (j< SPAN>
Help3[j+2]=Temp mod 10
Sec=Temp\10
Overf=True
Else if (Temp>9) And (j=i) then
Help3[j+2]=Temp mod10
Help3[j+3]=Temp\10
Overf=False
LP=J+3
Else
Help3[j+2]=Temp
End if
End Select
Next j
Next k
For z=1 to LP
If (overf=true) then
Temp=(Help1[z]+Help2[z]+Help3[z])+Sec)
Else
Temp=(Help1[z]+Help2[z]+Help3[z])
End if
If (Temp>9) and (z=LP) then
Final[z]=Temp mod 10
Final[z+1]=Temp\10
Else
Final[z]=Temp
Overf=False
End if
Next z