Board logo

标题: [原创]不限制位数,10进制内同进制的两个数之间相乘 [打印本页]

作者: 523066680     时间: 2009-2-21 15:22    标题: [原创]不限制位数,10进制内同进制的两个数之间相乘

写别的批处理,过程产生作品之一  。打稿纸在bathome的水区 和cn-dos的日志里


功能:不限制位数两个数之间相乘
         
输入格式如   10 20

可以选择10以内的进制 数 进行乘法运算 如 100 11 2    ,其中2表示2进制
@echo off &setlocal enabledelayedexpansion
title code by 523066680
set /p inp="input two numbers : "
call :naxnb %inp%
pause>nul
exit
:naxnb
set numa=%1
set numb=%2
if "%3"=="" (set /a delna=10,delnb=9) else (set /a delna=%3,delnb=%3-1)
set /a la=0,lpr=-1
:la
set /a la+=1,lb=0,lpr+=1,lp=lpr
  :lb
  set /a lb+=1,lp+=1,tlpa=lp,tlpb=lp+1
  :::::::::::::::::::::::::
  set /a cup%lp%+=!numa:~-%la%,1! * !numb:~-%lb%,1!
     :cuplp
     set /a cup%tlpb%+=cup%tlpa%/delna,cup%tlpa%=cup%tlpa%%%delna
     if !cup%tlpb%! gtr %delnb% (
        set /a tlpa+=1,tlpb=tlpa+1
        goto :cuplp
     ) else (if !cup%tlpb%! equ 0 set /a tlpb-=1)
  ::::::::::::::::::::::::::
  if not "!numb:~%lb%!"=="" (goto :lb)
if not "!numa:~%la%!"=="" (goto :la)
for /l %%a in (%tlpb%,-1,1) do set /p=!cup%%a!<nul
[ Last edited by 523066680 on 2009-5-1 at 23:09 ]
作者: BC     时间: 2009-2-21 18:58
快快将模块分出来加入函数库吧...
作者: moniuming     时间: 2009-2-21 20:24


  Quote:
Originally posted by BC at 2009-2-21 18:58:
快快将模块分出来加入函数库吧...

不支持浮点运算和正负数运算,不能定义保留小数位数,做成函数还不够成熟...
这个怎么样?
【共同参与】"批处理函数库"

[ Last edited by moniuming on 2009-2-21 at 20:27 ]
作者: 523066680     时间: 2009-2-22 11:32
所以有待改进嘛   莫急   一切都从简单开始。

上网时间限制太大了  大伙都在进步 我却停滞不前 , 唉
靠着两张稿纸,继续努力...

[ Last edited by 523066680 on 2009-2-22 at 12:24 ]