中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
« [1] [2] [3] [4] »
作者:
标题: [求助]文本输出~ 上一主题 | 下一主题
pusofalse
银牌会员




积分 1604
发帖 646
注册 2008-4-13
状态 离线
『楼 主』:  [求助]文本输出~

转自批处理之家

a.txt:
ababababababababa


输出:
ababababababababa
aba a aba ab b b
a a   ab  a  b
  a   ab     b
      a
空格位置是随机产生的,但纵向都是同一字母。。。

2008-5-6 22:44
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
bat-zw
金牌会员

永远的学习者


积分 3105
发帖 1276
注册 2008-3-8
状态 离线
『第 2 楼』:  这道题有难度啊!!!


@echo off&setlocal enabledelayedexpansion
set str=ababababababababa
echo %str%
:begin
set n=0&set m=0&set "var="
set /a a=%random%%%17+1,b=%random%%%17+1,c=%random%%%17+1
if %a% equ %b% goto begin
if %a% equ %c% goto begin
if %b% equ %c% goto begin
:lp
set /a n+=1
for %%i in (%a% %b% %c%) do if %%i equ %n% set m=1
if %m% equ 0 (
   set var=!var!%str:~,1%
   ) else (
   set "var=!var! "
)
set str=%str:~1%&set m=0
if defined str goto lp
if "!var!"=="                 " pause>nul&goto :eof
echo !var!
set str=!var!&goto begin
[ Last edited by zw19750516 on 2008-5-7 at 11:01 AM ]



批处理之家新域名:www.bathome.net
2008-5-7 11:00
查看资料  发送邮件  发短消息 网志  OICQ (841615149)  编辑帖子  回复  引用回复
bat-zw
金牌会员

永远的学习者


积分 3105
发帖 1276
注册 2008-3-8
状态 离线
『第 3 楼』:  上面还是没完全合楼主的要求:


@echo off&setlocal enabledelayedexpansion
set str=ababababababababa
echo %str%
:begin
set n=0&set m=0&set x=0&set "var="
:set
set /a a=%random%%%17+1
for %%i in (%code%) do if %%i equ %a% goto set
set /a x+=1&set code=%code% %a%
if %x% lss 3 goto set
:lp
set /a n+=1
for %%i in (%code%) do if %%i equ %n% set m=1
if %m% equ 0 (
   set var=!var!%str:~,1%
   ) else (
   set "var=!var! "
)
set str=%str:~1%&set m=0
if defined str goto lp
if "!var!"=="                 " pause>nul&goto :eof
echo !var!
set str=!var!&goto begin




批处理之家新域名:www.bathome.net
2008-5-7 11:52
查看资料  发送邮件  发短消息 网志  OICQ (841615149)  编辑帖子  回复  引用回复
26933062
银牌会员





积分 2268
发帖 879
注册 2006-12-19
状态 离线
『第 4 楼』:  

此题的真正要求是 a和b的总数是60个,且第一行第一个字母也是随机的,并不固定是a,第一行的字母总数也是随机的.

[ Last edited by 26933062 on 2008-5-7 at 12:04 PM ]



致精致简!
2008-5-7 12:02
查看资料  发短消息 网志   编辑帖子  回复  引用回复
bat-zw
金牌会员

永远的学习者


积分 3105
发帖 1276
注册 2008-3-8
状态 离线
『第 5 楼』:  请说详细点了:

对于楼主的题意我的代码已可以做到,但不知道原题是怎么样的,LS可以贴出来吗?



批处理之家新域名:www.bathome.net
2008-5-7 12:04
查看资料  发送邮件  发短消息 网志  OICQ (841615149)  编辑帖子  回复  引用回复
26933062
银牌会员





积分 2268
发帖 879
注册 2006-12-19
状态 离线
『第 6 楼』:  

要求:
  不产生临时文件,生成如楼主所提供的样本格式文件.
具体要求:
  a和b的总数为60个,每行的字母总数及位置都是随机的



致精致简!
2008-5-7 12:07
查看资料  发短消息 网志   编辑帖子  回复  引用回复
bat-zw
金牌会员

永远的学习者


积分 3105
发帖 1276
注册 2008-3-8
状态 离线
『第 7 楼』:  

条件好像不够吧,每行最多多少个字符啊?如没这个条件,不一行就做到了啊



批处理之家新域名:www.bathome.net
2008-5-7 12:13
查看资料  发送邮件  发短消息 网志  OICQ (841615149)  编辑帖子  回复  引用回复
26933062
银牌会员





积分 2268
发帖 879
注册 2006-12-19
状态 离线
『第 8 楼』:  

要求的就是随机,如果可能的话一行也有可能.
应该是随机产生a或b,是一个一个产生的.总数为60个.



致精致简!
2008-5-7 12:16
查看资料  发短消息 网志   编辑帖子  回复  引用回复
bat-zw
金牌会员

永远的学习者


积分 3105
发帖 1276
注册 2008-3-8
状态 离线
『第 9 楼』:  先发一个吧:


echo off
set "str=ab "&set m=0
:begin
set /a a=%random%%%60+1
set "var="
:lp
set /a b=%random%%%3
call,set c=%%str:~%b%,1%%
if not "%c%"==" " set /a m+=1
set /a n+=1&set var=%c%%var%
if %n% lss %a% goto lp
echo.%var%
if %m% lss 60 goto begin
pause>nul




批处理之家新域名:www.bathome.net
2008-5-7 12:47
查看资料  发送邮件  发短消息 网志  OICQ (841615149)  编辑帖子  回复  引用回复
26933062
银牌会员





积分 2268
发帖 879
注册 2006-12-19
状态 离线
『第 10 楼』:  

ls测试了么?
要的是顶楼的那种格式。



致精致简!
2008-5-7 14:15
查看资料  发短消息 网志   编辑帖子  回复  引用回复
bat-zw
金牌会员

永远的学习者


积分 3105
发帖 1276
注册 2008-3-8
状态 离线
『第 11 楼』:  先理一下思路:

&&按兄弟的意思就是先随机生成一个由a和b随机组成的字符总数小于60的字符串,然后逐行将字符串中的三个字符替换为空格,当字符总数(不含空格)达到60时终止是吧?
  但这样我认为会有问题,因为总会出现一行中不够三个字符的情况啊,同时还会出现第二行字符总数就超出60个的情况,再说真要实现上面的确实难度太大了!!!

[ Last edited by zw19750516 on 2008-5-7 at 03:32 PM ]



批处理之家新域名:www.bathome.net
2008-5-7 15:31
查看资料  发送邮件  发短消息 网志  OICQ (841615149)  编辑帖子  回复  引用回复
bat-zw
金牌会员

永远的学习者


积分 3105
发帖 1276
注册 2008-3-8
状态 离线
『第 12 楼』:  终于还是写出来了,确实难!!!


@echo off&setlocal enabledelayedexpansion
set "str=ab"&set /a a=%random%%%60+1
:begin
set /a b=%random%%%2
set c=!str:~%b%,1!&set var=%var%!c!
set /a n+=1
if %n% lss %a% goto begin
echo 下面为本次生成的字符串:
echo %var%&set code=%var%
echo 下面输出的字符(不含空格)总数为60个:
set "str="&set n=0
:lp
if !n! lss 60 if defined var (
   set /a b=%random%%%2
   if !b! equ 0 (
      set "b= "
      ) else (
      set b=!var:~,1!&set /a n+=1
   )
   set str=%str%!b!
   set var=%var:~1%
   goto lp
)
echo.%str%
if !n! lss 60 set str=&set var=%code%&goto lp
pause>nul
如要实现递减输出就难以满足字符总数为60个的要求了,如当原始生成的字符串为:a,就最多只有一行和一个字符了。

[ Last edited by zw19750516 on 2008-5-7 at 05:28 PM ]



批处理之家新域名:www.bathome.net
2008-5-7 16:30
查看资料  发送邮件  发短消息 网志  OICQ (841615149)  编辑帖子  回复  引用回复
uemuem
初级用户




积分 153
发帖 68
注册 2006-10-12
来自 上海
状态 离线
『第 13 楼』:  



  Quote:
Originally posted by 26933062 at 2008-5-7 12:16:
要求的就是随机,如果可能的话一行也有可能.
应该是随机产生a或b,是一个一个产生的.总数为60个.

你好像比LZ还LZ。。。



个人主页-找餐厅:http://www.canting.cc
2008-5-7 16:45
查看资料  发短消息 网志   编辑帖子  回复  引用回复
pusofalse
银牌会员




积分 1604
发帖 646
注册 2008-4-13
状态 离线
『第 14 楼』:  



  Quote:
Originally posted by zw19750516 at 2008-5-7 04:30 PM:
[code]@echo off&setlocal enabledelayedexpansion
set "str=ab"&set /a a=%random%%%60+1
:begin
set /a b=%random%%%2
set c=!str:~%b%,1!&set var=%var%!c!
set /a n+=1
if %n% l ...

高!确实高!虽然这段代码看起来还有点难度。。。。^_^

2008-5-7 17:55
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
26933062
银牌会员





积分 2268
发帖 879
注册 2006-12-19
状态 离线
『第 15 楼』:  

回复 12 楼
不好意识,答案仍不正确,可能是我描述的不够清楚吧。
每个字母的正上方不能是空格。
这么说吧
随机生成第一个字母,比如说是a就把他写入新文件,然后再生成第二个字母,如果同上一个字母一样,则把这个字母写在上一个字母的正下方,否则就写在第一行。

回复 13 楼
什么东西。。。。。



致精致简!
2008-5-7 19:44
查看资料  发短消息 网志   编辑帖子  回复  引用回复
« [1] [2] [3] [4] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: