|
ccwan
金牌会员
     
积分 2725
发帖 1160
注册 2006-9-23 来自 河北廊坊
状态 离线
|
『楼 主』:
用批处理列举水产品的最低、最高价
使用 LLM 解释/回答一下
在附件中的a.txt内,有着很多种水产品的单价,(详情请下载后看看)
现在该如何列举每种水产品的最高价和最低价呢?
要求输出格式如下:
虹鳟鱼:
最低价: 青岛城阳 34.00
最高价: 闽福鼎农贸 80.00
活鳜鱼:
最低价: 北京新发地 24.00
最高价: 北京八里桥 26.00
对于只有一个单价或价格一样的可以这样:
虹鳟鱼:
最低价: 闽福鼎农贸 80.00
最高价: 闽福鼎农贸 80.00
活鳜鱼:
最低价: 北京新发地 26.00
最高价: 北京八里桥 26.00
Last edited by ccwan on 2007-1-10 at 06:35 AM ]
附件
1: a.txt (2007-1-10 06:32, 11.22 KiB, 下载附件所需积分 1 点
,下载次数: 49)
|

三人行,必有吾师焉。 学然后知不足,教然后知困,然后能自强也。 |
|
2007-1-10 06:32 |
|
|
youxi01
高级用户
   
积分 846
发帖 247
注册 2006-10-27 来自 湖南==》广东
状态 离线
|
 『第 2 楼』:
使用 LLM 解释/回答一下
也来试试:
@echo off
setlocal enabledelayedexpansion
for /f "tokens=1,2,3" %%i in (a.txt) do (
if not defined %%j (
set a=
set %%j=A
set/a b+=1
set str!b!=%%j)
set/a a+=1
set MP_%%j!a!=%%i=%%k
)
for /l %%i in (1 1 %b%) do (
set Hprice=
for /f "tokens=2,3 delims==" %%a in ('set MP_!str%%i!') do (
set tmp=%%b
set tmp=!tmp:.=!
if not defined Hprice (
set/a Hprice=!tmp! & set/a Lprice=!tmp!
set Hmarcket=%%a & set Lmarcket=%%a
) else (
if !tmp! GEQ !Hprice! set/a Hprice=!tmp! & set Hmarcket=%%a
if !tmp! LEQ !Lprice! set/a Lprice=!tmp! & set Lmarcket=%%a)
)
echo !str%%i!:
echo.
echo 最高价: !Hmarcket! !Hprice:~0,-2!.!Hprice:~-2!
echo 最低价: !Lmarcket! !Lprice:~0,-2!.!Lprice:~-2!
echo.
)
pause>nul
Last edited by youxi01 on 2007-1-10 at 08:25 AM ]
此帖被 +10 点积分 点击查看详情 评分人:【 redtek 】 | 分数: +5 | 时间:2007-1-10 08:10 | 评分人:【 ccwan 】 | 分数: +5 | 时间:2007-1-10 20:48 |
|
|
|
2007-1-10 07:54 |
|
|
namejm
荣誉版主
       batch fan
积分 5226
发帖 1737
注册 2006-3-10 来自 成都
状态 离线
|
|
2007-1-10 07:54 |
|
|
youxi01
高级用户
   
积分 846
发帖 247
注册 2006-10-27 来自 湖南==》广东
状态 离线
|
『第 4 楼』:
使用 LLM 解释/回答一下
TO nameJM:
斑竹就是斑竹,看了你的代码真是惭愧啊。我开始的时候还去定义鱼的种类,真是多此一举啊!
还有一个问题就是,我修改之后怎么我的帖子怎么成了2F了,原来是3F的哦!
|
|
2007-1-10 08:00 |
|
|
namejm
荣誉版主
       batch fan
积分 5226
发帖 1737
注册 2006-3-10 来自 成都
状态 离线
|
『第 5 楼』:
使用 LLM 解释/回答一下
Originally posted by youxi01 at 2007-1-9 19:00:
斑竹就是斑竹,看了你的代码真是惭愧啊。我开始的时候还去定义鱼的种类,真是多此一举啊!
还有一个问题就是,我修改之后怎么我的帖子怎么成了2F了,原来是3F的哦!
我的代码存在一点瑕疵,具体看我代码里的说明。另外,你的代码有点问题,不知道你仔细查看了运行后的结果了没有。<img src="images/smilies/face-raspberry.png" align="absmiddle" border="0">
呵呵,因为我操作不慎,编辑帖子的时候,误点了删除,导致我发在2楼的帖子被删掉了-_-|
Last edited by namejm on 2007-1-9 at 07:08 PM ]
|

尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。 |
|
2007-1-10 08:04 |
|
|
redtek
金牌会员
     
积分 2902
发帖 1147
注册 2006-9-21
状态 离线
|
『第 6 楼』:
使用 LLM 解释/回答一下
精彩!!!欣赏~~~
上面那两种鱼我都没吃过:( ~~口水直流~~````
|

Redtek,一个永远在网上流浪的人……
_.,-*~'`^`'~*-,.__.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._ |
|
2007-1-10 08:08 |
|
|
youxi01
高级用户
   
积分 846
发帖 247
注册 2006-10-27 来自 湖南==》广东
状态 离线
|
『第 7 楼』:
使用 LLM 解释/回答一下
Originally posted by namejm at 2007-1-10 08:04 AM:
我的代码存在一点瑕疵,具体看我代码里的说明。另外,你的代码有点问题,不知道你仔细查看了运行后的结果了没有。:P
呵呵,因为我 ...
你提出的问题,我写的也没有考虑,其它的还没看到?
|
|
2007-1-10 08:12 |
|
|
namejm
荣誉版主
       batch fan
积分 5226
发帖 1737
注册 2006-3-10 来自 成都
状态 离线
|
『第 8 楼』:
使用 LLM 解释/回答一下
那我提示一下:在最后那几种产品中,产地显示有错误,应该是你没有注意清空变量导致的。
|

尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。 |
|
2007-1-10 08:17 |
|
|
youxi01
高级用户
   
积分 846
发帖 247
注册 2006-10-27 来自 湖南==》广东
状态 离线
|
|
2007-1-10 08:26 |
|
|
ccwan
金牌会员
     
积分 2725
发帖 1160
注册 2006-9-23 来自 河北廊坊
状态 离线
|
|
2007-1-10 20:50 |
|
|
namejm
荣誉版主
       batch fan
积分 5226
发帖 1737
注册 2006-3-10 来自 成都
状态 离线
|
|
2007-1-12 03:57 |
|
|
ccwan
金牌会员
     
积分 2725
发帖 1160
注册 2006-9-23 来自 河北廊坊
状态 离线
|
『第 12 楼』:
使用 LLM 解释/回答一下
临时文件没关系,重要的是解决了问题。
|

三人行,必有吾师焉。 学然后知不足,教然后知困,然后能自强也。 |
|
2007-1-12 04:31 |
|
|
zh159
金牌会员
     
积分 3687
发帖 1467
注册 2005-8-8
状态 离线
|
 『第 13 楼』:
使用 LLM 解释/回答一下
结果和 11 楼 namejm 版主的一样,也是效率较低,但不用生成临时文件。
::zh159@bbs.cn-dos.net 2007-1-11
@echo off
setlocal EnableDelayedExpansion
for /f "tokens=1-3" %%i in (a.txt) do set $%%i %%j %%k=$
for /f "tokens=1-2" %%i in (a.txt) do if not "%%j" == "!Type!" set Type=%%j&&call :Scan %%j
pause
exit
:Scan
set Min=1000000
set Max=0
for /f "tokens=1-3* delims==$ " %%i in ('set $^|find "%1"') do (
set num=%%k&&set num=!num:.=!
if !num! LEQ !Min! set Min=!num!
if !num! GEQ !Max! set Max=!num!
)
echo %1:
echo.
for /f "tokens=1-3* delims==$ " %%i in ('set $^|find "%1"') do set num=%%k&&set num=!num:.=!&&if "!num!" == "!Min!" echo 最低价: %%i %%k
for /f "tokens=1-3* delims==$ " %%i in ('set $^|find "%1"') do set num=%%k&&set num=!num:.=!&&if "!num!" == "!Max!" echo 最高价: %%i %%k
echo.------------------------------
goto :eof
Last edited by zh159 on 2007-1-11 at 11:45 PM ]
此帖被 +14 点积分 点击查看详情 评分人:【 ccwan 】 | 分数: +7 | 时间:2007-1-12 21:03 | 评分人:【 redtek 】 | 分数: +7 | 时间:2007-1-12 23:09 |
|
|
|
2007-1-12 12:42 |
|
|
tuesposo
初级用户
 
积分 68
发帖 28
注册 2006-12-29
状态 离线
|
|
2007-1-12 21:28 |
|
|
zh159
金牌会员
     
积分 3687
发帖 1467
注册 2005-8-8
状态 离线
|
『第 15 楼』:
使用 LLM 解释/回答一下
修改了一下,提高了效率,也不用生成临时文件。
::zh159@bbs.cn-dos.net 2007-1-13
@echo off
title 水产最低价^&最高价 zh159@bbs.cn-dos.net 2007-1-13
setlocal EnableDelayedExpansion
for /f "tokens=1-3*" %%i in (a.txt) do set %%j.%%i.%%k=.
for /f "tokens=1-3*" %%i in (a.txt) do if not "%%j" == "!Type!" set Type=%%j&&call :Scan %%j
pause
exit
:Scan
set Min=M
set Max=0
for /f "tokens=1-4* delims==." %%i in ('set "%1"') do (
if %%k%%l LEQ !Min! set Min=%%k%%l
if %%k%%l GEQ !Max! set Max=%%k%%l
)
echo %1:
echo.
for /f "tokens=1-4* delims==." %%i in ('set "%1"') do if "%%k%%l" == "%Min%" echo 最低价: %%j %%k.%%l
for /f "tokens=1-4* delims==." %%i in ('set "%1"') do if "%%k%%l" == "%Max%" echo 最高价: %%j %%k.%%l
echo.------------------------------
goto :eof
此帖被 +15 点积分 点击查看详情 评分人:【 namejm 】 | 分数: +8 | 时间:2007-1-14 01:16 | 评分人:【 ccwan 】 | 分数: +7 | 时间:2007-1-14 01:38 |
|
|
|
2007-1-13 23:54 |
|