Skip to content

Cálculo da Média Aritmética em Shell Script

*** updated ***
Aproveitando o embalo sobre MA, resolvi fazer um shell script que também calcula a MA.

Como funciona?

Digite: script valor1 valor2 valor3…. valorn

Exemplo

./media_aritmetica.sh 5 3 7

———————-
Lim Superior: 15
QTD N: 3
Resultado MA: 5.00
———————-

O código fonte abaixo:

#!/bin/bash
# Esse script é uma “Classe” para cálculos estatísticos
# Copyright 2008 Kaio Rafael – kaio@gudam.org

###
# Funcoes
#####

# Media Aritmetica Simples
MediaAritmetica(){

TOTALN=$#
LIMSUP=0
MA=0 # Resultado da media aritmetica
QTDZERO=2

while ((“$#”))
do
tempvar=`echo -n “$1” | sed ‘s/,/./g’`
LIMSUP=`echo “scale=2; $tempvar + $LIMSUP” | bc `

shift # decrementa os argumentos passados
done

MA=$(echo “scale=$QTDZERO; $LIMSUP / $TOTALN” | bc)

echo “———————-“
echo “Lim Superior: $LIMSUP “
echo “QTD N: $TOTALN “
echo “Resultado MA: $MA”
echo “———————-“
printf “\n\n”

}

## Programa Principal

MediaAritmetica $@

Limitações:
Não tem mais limitações :)
O próximo vai ser média ponderada :)

Obrigado ao finaldestination do http://rseiub.blogspot.com/ pela sugestão!

2 Comments

  1. finaldestination finaldestination

    Pô cara, legal.
    Não conhecia esse comando shift. Bem útil. Eu teria feito esse while com um for… :P

    Para tornar possível a entrada de valores reais (float) é substituir esta linha:

    LIMSUP=`expr $1 + $LIMSUP`

    por esta:

    LIMSUP=`echo “scale=2; $1 + $LIMSUP” | bc `

    Coloquei também um adicional de poder ler tanto floats com , quanto com . (este já estava funcionando com o comando anterior). Então fica assim:

    tempvar=`echo -n “$1” | sed ‘s/,/./g’`
    LIMSUP=`echo “scale=2; $tempvar + $LIMSUP” | bc `

    flws! :)

  2. Kaio Rafael Kaio Rafael

    Valeu cara!

    Funcionou direitinho :)

    Abraços

    []’z

Comments are closed, but trackbacks and pingbacks are open.