Board logo

标题: [其他] 请教如何用批处理画出正方形和抛物线? [打印本页]

作者: scale_888    时间: 2009-3-21 23:16     标题: 请教如何用批处理画出正方形和抛物线?

@echo off
setlocal enabledelayedexpansion
mode con cols=102 lines=25
for /l %%a in (1,1,100) do (set k= !k!)
for /l %%a in (-10,1,10) do (set h%%a=%k%)
set la=-11
:la
set /a la+=1,lb=la*la,tlb=100-lb
set h%la%=!h%la%:~%tlb%!.
ping -n 1 127.1>nul
cls
for /l %%a in (-10,1,10) do echo,!h%%a!
if %la% lss 10 goto :la
pause

这段代码是怎么输出这种抛物线的,真是百思不得其解....,,根据代码一步一步分析,,好像不可能得出这样的结果.请各位大哥指教....
作者: yslyxqysl    时间: 2009-3-22 13:42

start   =11
11+-4=7
...
1+0    =1
1+1    =2
...
7+4    =11

组合:
          a
      a
   a
a
a
a
   a
      a
          a
作者: 523066680    时间: 2009-3-22 13:45

楼主为何不在原帖讨论 ,我记得一楼的代码是~ 发的


啊 还是解释一下一楼的:
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /l %%a in (1,1,79) do (set k= !k!)
  4. ::变量k=100个空格
  5. for /l %%a in (-8,1,8) do (set h%%a=%k%)
  6. ::变量 h-8 到 h8 都=79个空格
  7. set la=-9
  8. :la
  9. set /a la+=1,lb=la*la
  10. set h%la%=!h%la%:~0,%lb%!.
  11. ::计算出la行的点应处在什么位置,即lb值
  12. ::然后对la行进行描点。
  13. ping -n 1 127.1>nul
  14. cls
  15. for /l %%a in (-8,1,8) do echo,!h%%a!
  16. ::显示h-10 到 h10 的行
  17. if %la% lss 10 goto :la
  18. pause
复制代码

[ 本帖最后由 523066680 于 2009-3-22 14:24 编辑 ]
作者: 523066680    时间: 2009-3-22 14:21

过程就是
  逐行描点,每描一个点,就把所有行显示一次。

la表示行 lb表示列 上面描述的图像是 列=行*行 的图像。
为了描述出整个曲线,所以行的编号设为 从 -8 到 8

la=-8 时  lb=64
     -7           49
     -6           36
            :
            :
       0            0
       1            1
       2            4
       3            9
       4          16
       5          25
       6          36
       7          49
       8          64

执行过程就是将这些坐标逐个描出来。

[ 本帖最后由 523066680 于 2009-3-22 14:29 编辑 ]




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2