While - Ajuda [RESOLVIDO]

1. While - Ajuda [RESOLVIDO]

Gustavo
rs23

(usa Ubuntu)

Enviado em 27/05/2010 - 23:45h

O seguinte script deve mostrar na tela:
soma dos números digitados
quantidade dos números digitados
média aritmética dos números digitados
maior e o menor número digitado

Estou com dificuldades em implementar este script


#!/bin/bash

mediaNumeros=0
maior=0
menor=10
somaValores=0
acumulador=0

while [ "$n" != 0 ]
do
echo "Entre com valores (ou 0 para sair) "
read n

acumulador = `echo ("$n + 1")`
somaValores = `echo ("$somaValores + 1")`
mediaNumeros=`echo "scale=2;(" $somaValores/$acumulador") | bc`

if [ $n > $maior" ]
then
maior=$n
fi
if [ `echo "$n < $menor" ]
then
menor=$n
fi

done

echo "Soma dos valores digitados: $somaValores"
echo "Quantidade de numeros digitados: $acumulador"
echo "Media Total: $mediaNumeros"
echo "Maior: $Maior"
echo "Menor: $Menor"


  


2. MELHOR RESPOSTA

Caio Carrara
ccarrara

(usa Fedora)

Enviado em 31/05/2010 - 07:16h

Programinha simples... Se ficar dúvidas pode perguntar!

Algumas alterações:
- local de inicialização das variáveis;
- o primeiro número digitado é maior e menor ao mesmo tempo;
- corrigida a expressão do acumulador e do somaValores;
- mudada a expressão da média

Acho que precisa de mais alguma melhorada, mas já está melhor do que estava. E está funcionando na maioria do casos...


#!/bin/bash
clear

acumulador=0

echo -e "Entre com valores (ou 0 para sair)\n"
read n
maior=$n
menor=$n
somaValores=$n
acumulador=`expr $acumulador + 1`
while [ "$n" != 0 ]
do
echo -e "Entre com valores (ou 0 para sair)\n"
read n
if [ $n != 0 ]
then
acumulador=`expr $acumulador + 1`
somaValores=`expr $somaValores + $n`

if [ "$n" -gt "$maior" ]
then
maior="$n"
fi

if [ "$n" -lt "$menor" ]
then
menor="$n"
fi
fi
done

mediaNumeros=`expr $somaValores / $acumulador`

echo "Soma dos valores digitados: $somaValores"
echo "Quantidade de numeros digitados: $acumulador"
echo "Media Total: $mediaNumeros"
echo "Maior: $maior"
echo "Menor: $menor"

3. Re: While - Ajuda [RESOLVIDO]

DAVISON MARCEL PASQUALINI
fdmarp

(usa Debian)

Enviado em 28/05/2010 - 18:45h

Código arrumado ... agora a lógica ... não conferi ...


#!/bin/bash

mediaNumeros=0
maior=0
menor=10
somaValores=0
acumulador=0

while [ "$n" != 0 ]
do
echo "Entre com valores (ou 0 para sair) "
read n

acumulador=`echo $(($n+1))`
somaValores=`echo $(($somaValores+1))`
mediaNumeros=`echo "scale=2;$(($somaValores/$acumulador))" | bc`

if [ "$n" -gt "$maior" ]
then
maior="$n"
fi

if [ "$n" -lt "$menor" ]
then
menor="$n"
fi

done

echo "Soma dos valores digitados: $somaValores"
echo "Quantidade de numeros digitados: $acumulador"
echo "Media Total: $mediaNumeros"
echo "Maior: $maior"
echo "Menor: $menor"



4. Re: While - Ajuda [RESOLVIDO]

Gustavo
rs23

(usa Ubuntu)

Enviado em 28/05/2010 - 23:38h

fdmarp

Existe um erro na hora de ficar pedindo os valores
O programa sempre repete a mesma frase e quando digito 0
o programa finaliza mas não conta a quantidade total de números digitados


5. Re: While - Ajuda [RESOLVIDO]

DAVISON MARCEL PASQUALINI
fdmarp

(usa Debian)

Enviado em 29/05/2010 - 12:41h

Quanto a frase ... só tem uma neh ... ai so da pra ser esta! Agora a quantidade de numeros ... o seu "acumulador" é n+1, ou seja o numero digitado + 1 ... e quando voce digita outro numero ele vai queimando.

crie algo do tipo contador=$(($contador+1))

blz?!


6. Re: While - Ajuda [RESOLVIDO]

Gustavo
rs23

(usa Ubuntu)

Enviado em 31/05/2010 - 22:29h

ccarrara

Obrigado pela ajuda rodei e funcionou

Tópico resolvido






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts