Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- #
- # ----------------------------------------------------------------------
- # PRA2 : Guions bash
- # Codi font : prac2_3.sh
- # Nom Pere Rollon Baiges.
- # Nom Francisco Javier Roig Gregorio
- # ----------------------------------------------------------------------
- #funcio que ordena numericament el valor numèrics dels paràmetres entrats
- function BubbleSort(){
- let Len=${#elements[@]}
- for ((i=Len-1;i>0;i--));do
- for((j=0;j<i;j++));do
- let "next_to_j=$j+1"
- if ((${elements[$next_to_j]} <= ${elements[$j]}));then
- tmp=${elements[$j]}
- elements[$j]=${elements[$next_to_j]}
- elements[$next_to_j]=$tmp
- fi
- done
- done
- }
- #funcio que ens comprova que tot els valors entrats son valors positius
- function positiveArray(){
- let areNegative=$1
- for (( i=0; i<${#positive[*]}; i++ ));do # recorre cada element comprovant que siguin major o iguals que 1 en cas contrari areNegative=1
- if [[ ${positive[i]} -lt 1 ]];then
- let areNegative=1
- return $areNegative
- fi
- done
- return $areNegative
- }
- isprime(){
- num=$1
- i=2 # contador inicial
- if [[ $num -eq 1 ]]; then # El numero 1 no es considerat nombre primer
- return 1
- else
- while [ $i -lt $num ];do
- let a=$num%$i # retorna el valor del residu de la divisió num/i
- if [[ $a -eq 0 ]];then
- return 1
- fi
- let i=i+1
- done
- fi
- return 0
- }
- #funcio que ens recull els nombres primers i els guarda dins d'un array
- function reuneixPrimers() {
- let Len=${#elements[*]}
- for((n=0; n<Len; n++));
- do
- num=${elements[n]} # extreu un numero del vector elements
- isprime $num
- if [[ $? -eq 0 ]];then
- array_primers+=($num) # si es primer llavors l'afegeix al vector array_primers
- fi
- done
- }
- function mostrarMaxim(){
- echo -e "\nMaxim de [ ${positive[*]} ] : ${elements[${#elements[@]}-1]}"
- # es mostra l'ultim valor del vector elements ja que despres d'ordenar-ho podem assegurarar que la última posició estara el valor mes gran
- }
- function mostrarMinim(){
- echo -e "\nMinim de [ ${positive[*]} ] : ${elements[0]}"
- # es mostra l'ultim valor del vector elements ja que despres d'ordenar-ho podem assegurarar que la primera posició estara el valor mes petit
- }
- function mostrarPrimers(){
- reuneixPrimers&&echo -e "\nNombres primers de [ ${positive[*]} ] : ${array_primers[*]}"
- # es mostren els nombres primers del vector array_primers
- }
- positive=($@) # Array que es comprovara que que tots els valors siguin positius
- positiveArray 0 # crida a la funcio: retorna 0 si tots els elements son positius en cas contrari retorna 1
- isPositive=$? # variable on es guarda el retorn de la funcio previament cridada
- if (test $# -lt 2);then # comprova que hi ha un mínim de 2 valors als paràmetres
- echo "Us: $0 <numero 1> <numero2> [... <numero N>]"
- exit -1
- elif [[ $isPositive -eq 1 ]]; then
- echo "sisplau utilitzi valors positius mes gran que 0"
- exit -1
- fi
- elements=($@) # copia el vector de parametres dins d'una variable diferents que s'utilitzara per ordenarho posterioment
- # tambe serveix per conservar el vector dels parametres entrats
- array_primers=() # vector on es guardaran els nombres primers
- BubbleSort # ordena els valors del vector elements
- echo -e "\nM E N U"
- echo -e "\n--------\n"
- echo "X: maXim"
- echo "N: miNim"
- echo -e "P: Primers\n"
- read -p "Tria una opcio: "
- case "$REPLY" in
- x|X)
- mostrarMaxim
- ;;
- n|N)
- mostrarMinim
- ;;
- p|P)
- mostrarPrimers
- ;;
- *)
- echo -e "\nOpció '$REPLY' incorrecta"
- exit 1
- ;;
- esac
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement