2013-04-29 53 views
-1

我必須編寫一個程序,允許用戶輸入任意數量的數字,並確定哪個數字最大,最小,總和是多少,以及所有數字的平均值進入。我是否被迫使用數組來做到這一點,或者有另一種方式嗎?如果我必須使用一個數組,有人可以幫我解釋一下我應該如何處理這個問題嗎?謝謝在UNIX中的bash shell中編寫程序

+0

一個更具描述性的主題也可以。 – mgarciaisaia 2013-04-29 22:33:12

回答

0

你不需要一個數組。只保留迄今爲止最大和最小的數字,數字和總數。平均值只是sum/count

要讀取輸入,可以在while循環中使用read

0

簡單直接的嘗試,有一些問題:

#!/bin/bash 

echo "Enter some numbers separated by spaces" 
read numbers 

# Initialise min and max with first number in sequence 
for i in $numbers; do 
    min=$i 
    max=$i 
    break 
done 

total=0 
count=0 
for i in $numbers; do 
    total=$((total+i)) 
    count=$((count+1)) 
    if test $i -lt $min; then min=$i; fi 
    if test $i -gt $max; then max=$i; fi 
done 
echo "Total: $total" 
echo "Avg: $((total/count))" 
echo "Min: $min" 
echo "Max: $max" 

與/ bin/sh的,所以你實際上並不需要的bash,這是一個更大的外殼也進行測試。另請注意,這隻適用於整數,平均值被截斷(不是舍入)。

對於浮點,可以使用bc。使用

import sys 
from functools import partial 

sum = partial(reduce, lambda x, y: x+y) 
avg = lambda l: sum(l)/len(l) 

numbers = sys.stdin.readline() 
numbers = [float(x) for x in numbers.split()] 

print "Sum: " + str(sum(numbers)) 
print "Avg: " + str(avg(numbers)) 
print "Min: " + str(min(numbers)) 
print "Max: " + str(max(numbers)) 

你可以在bash嵌入它:但不是多次下探到不同的解釋,爲什麼不把它寫在一些更適合的問題,如蟒蛇Python或Perl中,如一個這裏的文檔,看到這個問題:How to pipe a here-document through a command and capture the result into a variable?

+0

謝謝這是一個巨大的幫助! – Drubs1181 2013-04-30 01:31:41

+0

所以給我一個投票或什麼:-) – izak 2013-04-30 06:31:18

+0

對不起,我的代表太低,投票只是尚未。再次感謝,當我可以投票,我會def回來! – Drubs1181 2015-04-26 17:33:56