[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
……打算看帖不答题……

TOP

大概地模拟了一下2维数组,确实是一道“复合题”,后面的两行,我就不弄了
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set /a a=-1
  4. for /f "tokens=*" %%a in (a.x) do (
  5.    set /a a+=1,b=-1
  6.    for %%b in (%%a) do (
  7.       set /a b+=1
  8.       set str[!a!][!b!]=%%b
  9.    )
  10. )
  11. for /l %%b in (1,1,6) do (
  12.   for /l %%a in (1,1,%a%) do (
  13.     set /a !str[0][%%b]!+=str[%%a][%%b]
  14.     if "!str[%%a][%%b]!"=="0" (set zero%%b=!zero%%b!!str[%%a][0]!;)
  15.   )
  16.   if "!zero%%b!"=="" (set "zero%%b=无;")
  17.   for %%x in (!str[0][%%b]!) do (set now=!%%x!)
  18.   echo,!str[0][%%b]!!now! , 本次完成0的分局: !zero%%b:~0,-1!
  19. )
  20. pause
  21. exit
复制代码

TOP

如果要算法来排序,可能会选择用选择排序吧。。。。。。
排序可是个出过的题。你们用set 变量名, 用冒泡,用选择,用希尔,然后呢?

TOP

还是做了
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. ::第一部分是赋值二维数组模型
  4. set /a a=-1
  5. for /f "tokens=*" %%a in (a.x) do (
  6.    set /a a+=1,b=-1
  7.    for %%b in (%%a) do (
  8.       set /a b+=1
  9.       set str[!a!][!b!]=%%b
  10.    )
  11. )
  12. set /a 项目数=b-2
  13. ::给出某项任务完成的个数,并找出0的局
  14. for /l %%b in (1,1,%项目数%) do (
  15.   for /l %%a in (1,1,%a%) do (
  16.     set /a !str[0][%%b]!+=str[%%a][%%b]
  17.     if "!str[%%a][%%b]!"=="0" (set zero%%b=!zero%%b!!str[%%a][0]!;)
  18.   )
  19.   if "!zero%%b!"=="" (set "zero%%b=无;")
  20.   for %%x in (!str[0][%%b]!) do (set now=!%%x!)
  21.   echo,!str[0][%%b]!!now! , 本次完成0的分局: !zero%%b:~0,-1!
  22. )
  23. ::最后两列,和对应的项目名按顺序,匹配好并列出
  24. set /a last=b-1
  25. :result
  26. set result=!str[0][%last%]!:
  27. for /l %%b in (1,1,%a%) do (
  28.    for /l %%a in (1,1,%a%) do (
  29.      if "!str[%%a][%last%]!"=="%%b" (
  30.        set result=!result! !str[%%a][0]!!str[%%a][%last%]!
  31.      )
  32.    )
  33. )
  34. echo,%result%
  35. if %last% lss %b% (set /a last+=1 &goto :result)
  36. pause
  37. exit
复制代码

[ 本帖最后由 523066680 于 2009-11-20 14:49 编辑 ]
2

评分人数

    • Seter: 找到了C的影子!PB + 10
    • batman: 数组概念用的好!PB + 20

TOP

对出现的6进行了修补
数组赋值后遗留的 a b变量分别表示行和列
因为最后两列是排名,我用项目数=b-2表示项目数量,剔除了6

不足之处,表示同意。

[ 本帖最后由 523066680 于 2009-11-20 16:41 编辑 ]

TOP

我也发表一点观点

事实上这道题会遇到的排序问题,根之前讨论的纯数字排序有一点不同
就是你要:给这个项目排序,不管你怎样操作,
          最终都必须为每个数字匹配这个数值的"主人"  并显示出来。

这个问题在表格操作中是经常会遇到的,例如给学生各科成绩排名
此时要排的就不仅仅是数值,还有该分值对应的"主人"   
针对于各列并且要关系到其中一项的行上其他数据时,我认为应该让批处理加入 二维数组 概念

[ 本帖最后由 523066680 于 2009-11-21 10:02 编辑 ]

TOP

返回列表