- 论坛徽章:
- 0
|
我看的第三版,113页的那道练习。
在第四版中,是第六章的LAB5习题。
下面程序达到了题目要求,但感觉方法不大合适。
想请教有没好点的办法?
(
其中,在BEGIN设置min变量,保存捐款的最小值
awk执行语句中设置total、min、max的值,以供END中打印总结结果。)
- BEGIN {
- print "\n ***CAMPAIGN 1998 CONTRIBUTIONS***";
- print "-------------------------------------------------------------------";
- print " NAME PHONE JAN FEB MAR TOTAL";
- print "-------------------------------------------------------------------";
- min = 5000;
- };
- {
- total += $3+$4+$5;
- if (max<$3) max = $3
- else if (max<$4) max = $4
- else if (max<$5) max = $5;
- if (min>$3) min = $3
- else if (min>$4) min = $4
- else if (min>$5) min = $5;
- printf "%-19s %-15s %6.2f %7.2f %7.2f %7.2f\n",$1,$2,$3,$4,$5,$3+$4+$5
- }
- END {
- print "-------------------------------------------------------------------";
- print " SUMMARY";
- print "-------------------------------------------------------------------";
- printf " The campaign received a total of $%.2f for this quarter\n", total;
- printf " The average donation for the 12 contributors was $%6.2f.\n", total/12;
- printf " The highest contribution was $%6.2f\n", max;
- printf " The lowest contribution was $%6.2f\n", min;
- print "-------------------------------------------------------------------";
- }
复制代码
数据文件如下,假设是filename文件
Mike Harrington 510) 548-1278:250:100:175
Christian Dobbins 40 538-2358:155:90:201
Susan Dalsass 206) 654-6279:250:60:50
Archie McNichol 206) 548-1348:250:100:175
Jody Savage 206) 548-1278:15:188:150
Guy Quigley 916) 343-6410:250:100:175
Dan Savage 406) 298-7744:450:300:275
Nancy McNeil 206) 548-1278:250:80:75
John Goldenrod 916) 348-4278:250:100:175
Chet Main 510) 548-5258:50:95:135
Tom Savage:(40 926-3456:250:168:200
Elizabeth Stachelin:(916) 440-1763:175:75:300
调用脚本:gawk -f nawk.sc filename
[ 本帖最后由 bert1984 于 2009-2-16 23:47 编辑 ] |
|