Originally posted by bjsh at 2007-4-30 04:16 PM:
抽出了点时间 写了这个..
结果为:24691356902469134
不错,但会产生临时文件。
其实有办法不产生临时文件的。。youxia01 给了我们最好的提示:)
知,不觉多。不知,乃求知
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!
Originally posted by bjsh at 2007-4-30 04:16 PM:
抽出了点时间 写了这个..
结果为:24691356902469134
Originally posted by zhoushijay at 2007-4-30 04:50 PM:
set "num1=qwer/asdf2/asd34f/1234567890123456/asdf/aaaa"
set "num2=aaaaa2/23456789012345678/asdfssasd/asdaa"
这2个数应该是
2341234567890123456
+ 22345678901234567 ...
Originally posted by bjsh at 2007-4-30 16:44:
本来也不想产生临时文件;
本来想把/替换为alt+13;
不过没有实现我的想法;真想去debug看看;
无奈时间比较紧.;
就写了下来..
@echo off&Setlocal EnableDelayedExpansion
for /f "delims=" %%a in (1.txt) do (
set str=%%a
set str=!str:/=$_!
exit|cmd/kprompt !str!>>new_.txt
)
start new_.txt
| 评分人 | 分数 | 时间 |
|---|---|---|
| bjsh | +4 | 2007-05-01 07:30 |
@ECHO OFF 2>nul 3>nul&setlocal enabledelayedexpansion
set "num1=qwer/asdf2/asd34f/1234567890123456/asdf/aaaa"
set "num2=aaaaa2/23456789012345678/asdfssasd/asdaa"
set num=%num1:/= % %num2:/= %
for %%i in (%num%) do echo %%i|findstr /b /e *&&SET Z=/0%%i !z!
call :next %z%&&goto :eof
:next
set A=%~1&set B=%~2
:ADD
SET/AX-=1
CALL SET/AT1=%%A:~%X%,1%%+%%B:~%X%,1%%||(
ECHO %T3%%C%&&PAUSE&&GOTO :EOF)
CALL SET T3=%%A:~2,%X%%%%%B:~2,%X%%%
SET/A1/T2&&SET/AT1=T1+1
SET/AT2=1/(T1/10)||SET T2=0
SET C=%T1:~-1%%C%
GOTO ADD
| 评分人 | 分数 | 时间 |
|---|---|---|
| chenall | +5 | 2007-04-30 23:36 |
| flyinspace | +3 | 2007-05-01 06:36 |
| bjsh | +4 | 2007-05-01 08:22 |
Originally posted by everest79 at 2007-4-30 05:47 PM:
这个是按字符位由右向左递增进行个位数相加
SET/A1/T2&&SET/AT1=T1+1 //set /a 1/t2这个来判断t2(t2为上一循环进位)是否为零,若不是,将当前结果t1加一
SET/AT2=1/(T1/10)||SET T2=0 //set /a t2=1/(t1/10)这个判断当前循环结果(t1)是否大于10,若大于十,t2将被赋值为一(下一循环上一步),若小于十,则将进位t2置为零
Originally posted by everest79 at 2007-4-30 06:00 PM:
set /a a=1+1可以缩写为set/aa=1+1,那时我刚打别人实例上看到这个,所以就这么给写上了,不算好的书写习惯
19586
453
10039
请按任意键继续. . .
::code by youxi01@cn-dos.net
@echo off & setlocal enabledelayedexpansion
set "str1=qwer/asdf2/asd34f/13546641654546546654654654144553098785546154/asdf/aaaa"
set "str2=aaaaa2/453216543225443263845482842643/asdfssasd/asdaa"
call :GetNum "%str1%" num1
call :GetNum "%str2%" num2
call :Split %num1%
set/a Mnum=%num%,num=0,flag=0
call :Split %num2%
if %Mnum% LSS %num% set/a Mnum=%num%
set/a Mnum_=%Mnum%-1
for /l %%i in (1 1 %Mnum_%) do (
set/a Rnum%%i+=!flag!
if !Rnum%%i! GTR 10000 set/a flag=1
set Rnum%%i=000!Rnum%%i!
set Rnum%%i=!Rnum%%i:~-4!
set Rstr=!Rnum%%i!!Rstr!)
set/a Rnum%Mnum%+=%flag%
echo !Rnum%Mnum%!!Rstr!
pause>nul
:GetNum OBJ Res
for /f "delims=/ tokens=1,*" %%i in ("%~1") do (
if %%i LSS a set %2=%%i & goto :eof
call :GetNum "%%j" %2
) & goto :eof
:Split OBJ
set str=%~1
set/a num+=1
if %str% LSS 10000 set/a Rnum%num%+=%str% & goto :eof
set/a Rnum%num%+=10000%str:~-4%%%10000
set str=%str:~0,-4%
call :Split "%str%"
| 评分人 | 分数 | 时间 |
|---|---|---|
| flyinspace | +3 | 2007-05-02 18:58 |
Originally posted by youxi01 at 2007-5-2 04:35 AM:
21F的代码似乎有点点问题,要继续修改下:
测试如下:
19586
453
10039
请按任意键继续. . .
自己也发一段不成熟的代码(如果段数较多 ...