Script racha cuca [RESOLVIDO]

1. Script racha cuca [RESOLVIDO]

João Paulo Carneiro
jptudobem

(usa Debian)

Enviado em 04/02/2011 - 09:40h

Help-me

Galera, to rachando a cuca aqui e não sei mais pra onde ir hehehe.. Seguinte,

Tenho um comando que me retorna números inteiros aleatórios. Preciso que:

- Esse comando se repetia "n" vezes.
- Somar os resultados dos comando e tirar a média aritimética deles.
- Se a média for >= a "x", mandar email.

Consigo repetir esse comando essas "n" vezes através do while mas não consigo filtrar as respostas para fazer a média.

Ajudem-me.


  


2. MELHOR RESPOSTA

DAVISON MARCEL PASQUALINI
fdmarp

(usa Debian)

Enviado em 04/02/2011 - 13:12h

Ficaria algo tipo assim

i=1
num=0
soma_nums=0

while [ $i -le 5 ]
do

num=`./comando`

soma_nums=`expr $soma_nums + $num`
i=`expr $i + 1`
done

MEDIA=$( echo "$soma_nums / ( $i - 1) " | bc )

if [ $MEDIA -ge 800 ]; then
echo "" | mail -s "WARNING" email@email.com
else
echo "OK"
fi

3. Re: Script racha cuca [RESOLVIDO]

White Hawk
WhiteHawk

(usa Ubuntu)

Enviado em 04/02/2011 - 09:45h

Olá. Faça o seguinte: dentro do laço While, coloque uma variável do tipo inteiro com um nome qualquer(soma_nums, por exemplo) que receba o seguinte valor: soma_nums = soma_nums + x, onde x são os números que serão somados a cada execução do loop até que este seja finalizado. Depois disso, divida o soma_nums pelo contador usado(geralmente é a variável i, de índice). Assim você obterá a média aritmética dos números lidos pelo programa.


4. Re: Script racha cuca [RESOLVIDO]

João Paulo Carneiro
jptudobem

(usa Debian)

Enviado em 04/02/2011 - 09:51h

Desculpe amigo, obrigado pela ajuda, a lógica eu entendi mas na prática não faço idéia como fazer. Não saco muito de programação, comecei a ler sobre o while ontem e só sei fazer coisas básicas com ele. O que eu consegui fazer é:

#!/bin/bash

CONT=1

while [ $CONT -le 5 ]
do

comando
CONT=`expr $CONT + 1`

done

Ou seja, o comando é repetido por 5 vezes. A partir daí eu travo total.




5. Re: Script racha cuca [RESOLVIDO]

White Hawk
WhiteHawk

(usa Ubuntu)

Enviado em 04/02/2011 - 10:05h

Olá. Vou montar o algoritmo em português estruturado para você entender melhor. Depois você passa para a linguagem na qual ele será implementado.

algoritmo numeros;

var i, num, soma_nums de inteiro;
Inicio
i = 1;
num = 0;
soma_nums = 0;
enquanto (i <= 5)
inicio_enquanto
mostre("Digite um número inteiro.:");
leia(num);
soma_nums <- (soma_nums + num);
i <- i + 1;
fim_enquanto

mostre("A média aritmética.: ", (soma_nums/i));

Fim.


6. Re: Script racha cuca [RESOLVIDO]

João Paulo Carneiro
jptudobem

(usa Debian)

Enviado em 04/02/2011 - 10:20h

Pelo que entendi do português, vai ficar assim:

#!/bin/bash

i=1
num=0
soma_nums=0

while [ $i -le 5 ]
do

comando;

read $num;
soma_nums=`expr $soma_nums + $num`
i=`expr $i + 1`
done

MEDIA=$( echo "$soma_nums / $i" | bc )

if [ $MEDIA -ge 800 ]; then
echo "" | mail -s "WARNING" email@email.com
else
echo "OK"
fi

-

Desse jeito não deu certo, ele retorna o primeiro valor e para. Ele para no read.
O script não é interativo, ou seja, não pode ter o read. O "comando" é que me retorna o valor inteiro, é esse valor que tem que ser filtrado a cada vez que ele for executado.


7. Re: Script racha cuca [RESOLVIDO]

White Hawk
WhiteHawk

(usa Ubuntu)

Enviado em 04/02/2011 - 11:01h

Olá. Amigo, eu não programo em Shell Script, mas acabei de ler um artigo básico e construi um script para você. Teste aí pra ver se funciona:

#!/bin/bash

NUM=0
SOMA_NUMS=0
I=1

echo"----------While no Shell Script-----------"

while [i -le 5]; do
echo"Digite um numero.:"
read NUM
SOMA_NUMS=$((SOMA_NUMS+NUM))
I=$((I+1))

done

echo"A media aritmetica.: "
echo"$SOMA_NUMS/$I"


Qualquer coisa, poste novamente e terei prazer em ajudar.

Boa Sorte.


8. Re: Script racha cuca [RESOLVIDO]

DAVISON MARCEL PASQUALINI
fdmarp

(usa Debian)

Enviado em 04/02/2011 - 11:20h

do jeito que voce pois realmente ele aguarda colocar o $num ... se sua variavel vem do resultado do comando ... ai seria algo do tipo num=`comando` ... alias que comando é esse? ele te retorna exatamente o valor?


9. Re: Script racha cuca [RESOLVIDO]

White Hawk
WhiteHawk

(usa Ubuntu)

Enviado em 04/02/2011 - 11:28h

Olá. Me desculpe, eu não tinha lido o final de sua mensagem. Já que o seu script não é interativo e o número inteiro vem do "comando", você deve criar uma função que execute o que você quer. Simplesmente colocar "comando;" no meio do shell script não surtirá nenhum efeito.


10. Re: Script racha cuca [RESOLVIDO]

João Paulo Carneiro
jptudobem

(usa Debian)

Enviado em 04/02/2011 - 11:34h

Sim, ele retorna números inteiros aleatórios a cada vez que o comando é executado


11. Re: Script racha cuca [RESOLVIDO]

João Paulo Carneiro
jptudobem

(usa Debian)

Enviado em 04/02/2011 - 13:17h

Opa.... resolvido. Valeu galera. =)






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts