Vetores com calculo

1. Vetores com calculo

Mineiro
mineiro3555

(usa Ubuntu)

Enviado em 01/12/2011 - 12:33h

PReciso de um script que faça o seguinte:
1. Faça um script chamado notas, que deve possuir um menu com as seguintes opções:
1-Informar nota
2-Consultar nota
3-Exibir situação
4-Sair
As notas devem ser armazenadas em um vetor, para facilitar a sua consulta. Então ao selecionar a opção 1, será solicitado ao usuário a nota, e ela deverá ser armazenada no vetor. A opção 2, pedirá ao usuário qual nota deve ser consultada, e então será exibida a nota de acordo com a sua posição no vetor. A opção exibir situação deve somar todas as notas do vetor, e exibir Aprovado caso a soma seja maior que 60, prova final caso esteja entre 20 e 60, e reprovado caso seja menor do que 20. Caso a situação seja prova final, deve ser lida a nota da prova final, depois somada com a nota total e dividido por 2, conforme fórmula a seguir: (nota total + nota prova final)/2
Caso o valor seja menor que 60 deve ser exibido reprovado e caso contrário deverá ser exibido aprovado. A opção 4 encerra o script.

Obrigado!!


  


2. Re: Vetores com calculo

DAVISON MARCEL PASQUALINI
fdmarp

(usa Debian)

Enviado em 01/12/2011 - 12:51h

echo "
1-Informar nota
2-Consultar nota
3-Exibir situação
4-Sair
"

Pronto! fiz a tela do menu, agora você faz o resto e no que tiver dúvida nós ajudamos.

O objetivo de ter exercícios é o de você aprender ... se não tentar ... nunca vai aprender.

Tenta ... cola e vamos fazendo isso juntos ok!?


3. Vetor

Mineiro
mineiro3555

(usa Ubuntu)

Enviado em 01/12/2011 - 23:15h

Parte do menu eu sei.
queria saber como fazer pra armazenar um numero indeterminado de notas que sera passado em um vetor e depois tambem conseguir somar esses valores que estarao no vetor
Obrigado!


4. Re: Vetores com calculo

Raimundo Alves Portela
rai3mb

(usa Outra)

Enviado em 02/12/2011 - 11:06h

Poste o que vc já fez, tentou fazer...


veja um exemplo de como dar pra somar valores em um vetor:

$ echo ${vetor_notas[@]} | tr ' ' '+' | bc

o vetor_notas contem as notas anteriormente informadas, depois o tr troca o espaço em branco que separa os itens no vetor por um sinal de +, dai a calculadora bc vai receber valores como "3+7+1" e vai fazer o calculo e mostrar na saída padrão.

Pegue isso, e vá construindo seu script.

Abraços


5. Somatorio

Mineiro
mineiro3555

(usa Ubuntu)

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

boa essa ai de somar..sakei como eh..
a questao q ta faltando agora eh soh de armazenar os valores passados no vetor.
quando passo uma segunda nota ela elimina a passada anterior.


6. Re: Vetores com calculo

Raimundo Alves Portela
rai3mb

(usa Outra)

Enviado em 02/12/2011 - 11:41h

Vetores trabalham com posição, então basta escrever novos dados em uma posição diferente...

vetor_notas[0]=1
vetor_notas[1]=2
etc






7. vetor

Mineiro
mineiro3555

(usa Ubuntu)

Enviado em 02/12/2011 - 12:39h

Mais é que o programa num vai ter um numero exato de notas que sera armazenada no vetor.
Por exemplo: uma vez posso passar tres notas, na outra 5 , e assim por diante. Entao teria q colocar com alguma coisa q armazenaria um numero indeterminado de notas e depois quando eu pedisse por exemplo a nota da posição 1 ele me voltasse esta nota.


8. Re: Vetores com calculo

9. Re: Vetores com calculo

Raimundo Alves Portela
rai3mb

(usa Outra)

Enviado em 02/12/2011 - 21:05h

Pense um pouco...

como é feita a atribuição inicial de um vetor em shell???

assim:

vetor=( VALOR1 VALOR2 VALOR3 ...)

então vc poderia fazer algo como, ...

vetor=( ${vetor[@]} $novo_valor )

Ou sabendo a quantidade de itens que já tem no vetor, pode adicionar mais um:


function _add_notas() {
#pega a quantidade de parametros que a funcao recebeu
qtd=$#
#obtem o tamanho do vetor
tam_vetor=${#vetor_notas[@]}
ini=$((tam_vetor+1))
fim=$((tam_vetor+qtd))
for i in $(seq $ini $fim)
do
vetor_notas[$i]=$1
# o shift caminha para o proximo parametro padrao armazenado nos identificadores $1, $2, etc....
shift
done
}




abaixo o código que fiz usando essa função, complemente-a, analise e veja se pode melhorá-la...


#!/bin/bash

function _add_notas() {
qtd=$#
tam_vetor=${#vetor_notas[@]}
ini=$((tam_vetor+1))
fim=$((tam_vetor+qtd))
for i in $(seq $ini $fim)
do
vetor_notas[$i]=$1
shift
done
}


while :
do
echo "
1 - adiciona nota(s)
2 - Consultar soma das notas
3 - Sair"
read -p 'Escolha: ' -n1 OP

case $OP in
1) echo;echo 'Informe a(s) nota(s)';read NOTAS; _add_notas "$NOTAS";
;;
2) echo;echo ${vetor_notas[@]} | tr ' ' '+' | bc;
;;
3) exit ;;
esac


done


Ou usando a primeira ideia, fica mais simples:


vetor=( ${vetor[@]} $novo_valor )


#!/bin/bash

function _add_notas() {
qtd=$#
for i in $(seq $qtd)
do
vetor_notas=( ${vetor_notas[@]} $1 )
shift
done
}


while :
do
echo "
1 - adiciona nota(s)
2 - Consultar soma das notas
3 - Sair"
read -p 'Escolha: ' -n1 OP

case $OP in
1) echo;echo 'Informe a(s) nota(s)';read NOTAS; _add_notas "$NOTAS";
;;
2) echo;echo ${vetor_notas[@]} | tr ' ' '+' | bc;
;;
3) exit
;;
esac


done



COmplete o resto para a sua necessidade....








Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts