佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

12
返回列表 发新帖
楼主: lonely_boy

那位大大可以帮我看看这题目(急用)

[复制链接]
发表于 2-7-2008 11:15 AM | 显示全部楼层
这个题目好像用1个loop就够了,他只要比较相邻的两个。另外如果要比较所有数值,用geekman大大的nested loop还是会比较到两个相同的数值喔,虽然头尾不会啦。呵呵。
回复

使用道具 举报


ADVERTISEMENT

发表于 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 不到


大大。。。
我已经放上去。。。
在一搂那里。。。
你看不到吗???/=.=
回复

使用道具 举报

Follow Us
发表于 2-7-2008 10:58 PM | 显示全部楼层
原帖由 lonely_boy 于 2-7-2008 09:40 PM 发表


大大。。。
我已经放上去了咯。。。
在一楼那里。。。
你看不到吗?



刚才的确看不到 因为一路以来只是看“接下去”的帖子

现在,不会看
改次可以用 [code] 和 [/code] block 起来吗?
回复

使用道具 举报

发表于 3-7-2008 12:59 AM | 显示全部楼层

回复 26# lonely_boy 的帖子

你在学Shell Script吗?
看到你的code,有点惊讶.
回复

使用道具 举报


ADVERTISEMENT

发表于 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 :
  1. ReadEntries() {

  2.         read -p "msg" TOTAL
  3.         COUNTER=0
  4.         while COUNTER < TOTAL do
  5.                 read -p "msg" SETS[$COUNTER]
  6.                 COUNTER++
  7.         done

  8. }

  9. Compare() {

  10.         if $1 > $2 then
  11.                 echo "more than"
  12.         elif $1 < $2 then
  13.                 echo "less than"
  14.         else
  15.                 echo "equals"
  16.         fi
  17.         
  18.         Differences

  19. }
  20.         
  21. Differences() {

  22.         if $1 < $2 then
  23.                 DIFF=$2-$1
  24.         else
  25.                 DIFF=$1-$2
  26.         fi

  27.         echo DIFF

  28. }

  29. ReadEntries

  30. COUNTER=0
  31. while COUNTER < TOTAL do
  32.         Compare SETS[$COUNTER] SETS[$COUNTER+1]
  33.         COUNTER++
  34. done
复制代码
如果有 Variable Scope 的问题,那么就直接在 ReadEntries 里面 call Compare 吧。

声明:These are pseudo-code。
回复

使用道具 举报

发表于 3-7-2008 03:14 AM | 显示全部楼层
  1. #!/bin/bash
  2. myList = "";
  3. num=1;
  4. echo ":: My Script ::"
  5. echo -n "Enter total number of entries : "
  6. read total

  7. while [ "$num" -le "$total" ];
  8.   do
  9.     echo -n "Enter number ["$num"] : "
  10.     read marks
  11.     tmpList=$tmpList" "$marks
  12.     let num++
  13.   done

  14. pre=null
  15. for cur in $tmpList; do
  16.     if [ "$pre" = "null" ]; then
  17.         pre=$cur;
  18.     else
  19.         if [[ $pre -eq $cur ]]; then
  20.             echo $pre" is equals to "$cur
  21.         elif [[ $pre -gt $cur ]]; then
  22.             echo $pre" is greater than "$cur
  23.         else
  24.             echo $pre" is smaller than "$cur
  25.         fi
  26.         pre=$cur;
  27.     fi
  28. done
复制代码


好奇的问下,你在那读Shell Script?
回复

使用道具 举报

 楼主| 发表于 4-7-2008 12:53 AM | 显示全部楼层
  1. #!/bin/bash
  2. function ReadEntries() {
  3. read -p "Enter total number of entries : " total
  4. for ((v=0; v < $total; v++))
  5. do
  6. read -p "Enter value : " value[$v]
  7. done
  8. }
  9. ReadEntries

  10. function Compare() {
  11. if [[ $1 == $2 ]]
  12. then
  13. echo $1 "is equal to" $2
  14. elif [[ $1 > $2 ]]
  15. then
  16. echo $1 "greater than" $2
  17. else
  18. echo $1 "is less" $2
  19. fi
  20. }

  21. function Differences() {
  22. ((answer = $1 - $2))
  23. echo "Differences between values above is" $answer
  24. }

  25. for ((v=0; v < $total-1; v++))
  26. do
  27. Compare ${value[$v]} ${value[$v+1]}
  28. Differences ${value[$v]} ${value[$v+1]}
  29. 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。
  1. function Differences() {
  2. ((answer = $1 - $2))
  3. if [ $answer -ne 0 ]; then
  4.      echo "Differences between values above is" $answer
  5. fi

  6. }
复制代码
当然这个是最直接的更改, 还有其余的方法。

  1. for ((v=0; v < $total-1; v++))

  2. do
  3.      
  4.    Compare ${value[$v]} ${value[$v+1]}

  5.     if [ ${value[$v]} -ne ${value[$v+1] ]; then
  6.            Differences ${value[$v]} ${value[$v+1]}
  7.     fi

  8. 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
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 24-12-2025 03:07 AM , Processed in 0.101038 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表