rdrfear
(Rdrfear)
#1
Witam. Chciałbym dowiedzieć się co robię nie tak w programach, które napisałem i dlaczego.
Dostaję ze standardowego wejścia kilka liczb i muszę wypisać minimum, maksimum i średnią tych dwóch liczb.
Napisałem coś takiego:
#!/bin/bash
cat | sort -n | head -1
cat | sort -n | tail -1
i = head -1 + tail -1
sr = $i / 2
echo "$sr"
Niestety to nie działa, a ja nie mam pojęcia co jest nie tak - tymbardziej, że nie mogę znaleźć niczego w google.
Prosiłbym o jakieś rady.
_alex
([alex])
#2
Drugi cat czyta inną partię liczb ze standardowego wejścia.
Musisz je obrabiać jedną po drugiej lub najpierw zapisać do pliku.
rdrfear
(Rdrfear)
#3
Postanowiłem zapisać najpierw dane do pliku. Kod wygląda tak:
#!/bin/bash
cat | sort -n > temp.txt
$min = cat | head -1 < temp.txt
$max = cat | tail -1 < temp.txt
i = $min + $max
sr = $i / 2
echo "$min"
echo "$max"
echo "$sr"
Jednak to nadal nie chce poprawnie działać. Ponadto mam jeszcze jedno pytanie - jak zrobić, żeby wynik był obcinany do całkowitych w kierunku 0?
nr47
(Sawyer47)
#4
To co napisałęś to zdecydowanie nie jest bash, pomieszałeś tam trochę Perla/PHP. Kod może wyglądać tak
seq=$(cat|sort -n)
min=$(echo "$seq" | head -1)
max=$(echo "$seq" | tail -1)
avg=$(echo "($min+$max)/2" | bc -l)
echo $min
echo $max
echo $avg
Użycie pliku to raczej przesada. Równie dobrze można użyć jedynie awk do tego zadania.
Dziękuję za rozwiązanie. Przydało mi się.
rdrfear , proszę zapoznaj się z tą stroną oraz tym tematem, a następnie,używając przycisku 