标题: [原创]不限制位数,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 ]