|
|
发表于 2-7-2008 11:15 AM
|
显示全部楼层
|
这个题目好像用1个loop就够了,他只要比较相邻的两个。另外如果要比较所有数值,用geekman大大的nested loop还是会比较到两个相同的数值喔,虽然头尾不会啦。呵呵。 |
|
|
|
|
|
|
|
|
|
|
发表于 2-7-2008 11:36 AM
|
显示全部楼层
回复 21# 咕咕叫 & 20# onlylonly 的帖子
你们说得对,我的方法错了。的确不需要nested loop。我想到bubble sort那边去了。
幸好我有免责声明。。。  |
|
|
|
|
|
|
|
|
|
|

楼主 |
发表于 2-7-2008 06:44 PM
|
显示全部楼层
帮我debug。。。
谢谢~~~
run不到。。。
== |
|
|
|
|
|
|
|
|
|
|
发表于 2-7-2008 09:17 PM
|
显示全部楼层
原帖由 lonely_boy 于 2-7-2008 06:44 PM 发表 
帮我debug。。。
谢谢~~~
run不到。。。
==
如果你已经写了你的 code ,那么放上来让大家看看吧。不然怎么知道你哪里 run 不到  |
|
|
|
|
|
|
|
|
|
|

楼主 |
发表于 2-7-2008 09:40 PM
|
显示全部楼层
原帖由 香草云 于 2-7-2008 09:17 PM 发表 
如果你已经写了你的 code ,那么放上来让大家看看吧。不然怎么知道你哪里 run 不到
大大。。。
我已经放上去了咯。。。
在一楼那里。。。
你看不到吗? |
|
|
|
|
|
|
|
|
|
|

楼主 |
发表于 2-7-2008 09:41 PM
|
显示全部楼层
原帖由 香草云 于 2-7-2008 09:17 PM 发表 
如果你已经写了你的 code ,那么放上来让大家看看吧。不然怎么知道你哪里 run 不到
大大。。。
我已经放上去。。。
在一搂那里。。。
你看不到吗???/=.= |
|
|
|
|
|
|
|
|
|
|
发表于 2-7-2008 10:58 PM
|
显示全部楼层
|
|
|
|
|
|
|
|
|
|
发表于 3-7-2008 12:59 AM
|
显示全部楼层
|
|
|
|
|
|
|
|
|
|
发表于 3-7-2008 01:12 AM
|
显示全部楼层
没学过 bash shell,也很惊讶你竟然是要用 bash shell
没有 linux platform,没法切确地 debug,syntax 你自己看着办吧。
你写 compare $1 $2,suppose $1 and $2 是 refer to 1st and 2nd argument,这是用在 function 里面的。$1 和 $2 的来源应该是 compare x y,then $1 <= x, $2 <= y。
differences 的 function call 也是一样的情况。
通常我们 input 的时候用 loop, assign values into array,output 的时候也会用同样的方法。这里你的 output 就出现在 function compare 里,所以 function compare de parameters 应该是什么已经呼之欲出。
给你一个比较完整的 logic :- ReadEntries() {
- read -p "msg" TOTAL
- COUNTER=0
- while COUNTER < TOTAL do
- read -p "msg" SETS[$COUNTER]
- COUNTER++
- done
- }
- Compare() {
- if $1 > $2 then
- echo "more than"
- elif $1 < $2 then
- echo "less than"
- else
- echo "equals"
- fi
-
- Differences
- }
-
- Differences() {
- if $1 < $2 then
- DIFF=$2-$1
- else
- DIFF=$1-$2
- fi
- echo DIFF
- }
- ReadEntries
- COUNTER=0
- while COUNTER < TOTAL do
- Compare SETS[$COUNTER] SETS[$COUNTER+1]
- COUNTER++
- done
复制代码 如果有 Variable Scope 的问题,那么就直接在 ReadEntries 里面 call Compare 吧。
声明:These are pseudo-code。 |
|
|
|
|
|
|
|
|
|
|
发表于 3-7-2008 03:14 AM
|
显示全部楼层
- #!/bin/bash
- myList = "";
- num=1;
- echo ":: My Script ::"
- echo -n "Enter total number of entries : "
- read total
- while [ "$num" -le "$total" ];
- do
- echo -n "Enter number ["$num"] : "
- read marks
- tmpList=$tmpList" "$marks
- let num++
- done
- pre=null
- for cur in $tmpList; do
- if [ "$pre" = "null" ]; then
- pre=$cur;
- else
- if [[ $pre -eq $cur ]]; then
- echo $pre" is equals to "$cur
- elif [[ $pre -gt $cur ]]; then
- echo $pre" is greater than "$cur
- else
- echo $pre" is smaller than "$cur
- fi
- pre=$cur;
- fi
- done
复制代码
好奇的问下,你在那读Shell Script? |
|
|
|
|
|
|
|
|
|
|

楼主 |
发表于 4-7-2008 12:53 AM
|
显示全部楼层
- #!/bin/bash
- function ReadEntries() {
- read -p "Enter total number of entries : " total
- for ((v=0; v < $total; v++))
- do
- read -p "Enter value : " value[$v]
- done
- }
- ReadEntries
- function Compare() {
- if [[ $1 == $2 ]]
- then
- echo $1 "is equal to" $2
- elif [[ $1 > $2 ]]
- then
- echo $1 "greater than" $2
- else
- echo $1 "is less" $2
- fi
- }
- function Differences() {
- ((answer = $1 - $2))
- echo "Differences between values above is" $answer
- }
- for ((v=0; v < $total-1; v++))
- do
- Compare ${value[$v]} ${value[$v+1]}
- Differences ${value[$v]} ${value[$v+1]}
- done
复制代码 我已经做倒酱了。。。
那个"is equal to" 还是跟我show Difference between values above is 0出来。。。
因为是一样的数字,所以不显示,但还是做不到。。。
怎样解决呢?
这个是它的output ::
Enter total number of entries : 6
Enter value : 4
Enter value : 3
Enter value : 2
Enter value : 2
Enter value : 9
Enter value : 6
4 is greater than 3
Difference between values above is 1
3 is greater than 2
Difference between values above is 1
2 is equal 2 《---我要想这样,下面没有difference....的。。。
2 is less than 9
Difference between values above is 7
9 is greater than 6
Difference between values above is 3
[ 本帖最后由 lonely_boy 于 4-7-2008 01:00 AM 编辑 ] |
|
|
|
|
|
|
|
|
|
|
发表于 4-7-2008 09:32 AM
|
显示全部楼层
加入一个 if statement。- function Differences() {
- ((answer = $1 - $2))
- if [ $answer -ne 0 ]; then
- echo "Differences between values above is" $answer
- fi
- }
复制代码 当然这个是最直接的更改, 还有其余的方法。
如- for ((v=0; v < $total-1; v++))
- do
-
- Compare ${value[$v]} ${value[$v+1]}
- if [ ${value[$v]} -ne ${value[$v+1] ]; then
- Differences ${value[$v]} ${value[$v+1]}
- fi
- done
复制代码
和是直接在 compare() 里 call difference, 不过这个我就些不出了。 虽然是linux 用户, 不过没研究shell script, syntax 方面就不太行了。
不过流程是这样
function Compare() {
if [[ $1 == $2 ]]
then
echo $1 "is equal to" $2
elif [[ $1 > $2 ]]
then
echo $1 "greater than" $2
differences $1 $2
else
echo $1 "is less" $2
differences $1 $2
fi
}
[ 本帖最后由 onlylonly 于 4-7-2008 09:56 AM 编辑 ] |
|
|
|
|
|
|
|
|
|
|
发表于 6-7-2008 01:33 AM
|
显示全部楼层
先检察answer是不是"0"才echo.
if [[ "$answer" != 0 ]]
then
echo "Differences between values above is" $answer
fi |
|
|
|
|
|
|
|
|
| |
本周最热论坛帖子
|