Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- tabS=(A B C D E F)
- # tabK - tab kolekcji elementow
- function naInny {
- case $2 in
- 2) dzielonePrzez=2 ;;
- 3) dzielonePrzez=8 ;;
- 4) dzielonePrzez=16 ;;
- esac
- liczba=$1
- x=0
- unset tabK[*]
- until [ $liczba -eq 0 ]
- do
- tabK[x]=$[liczba % dzielonePrzez]
- liczba=$[liczba / dzielonePrzez]
- x=$[x+1]
- done
- if [ $2 -eq 4 ] ; then
- x=0
- for i in ${tabK[*]}
- do
- if [ $i -ge 10 ] && [ $i -le 15 ] ; then
- tabK[x]=${tabS[$[i-10]]}
- fi
- x=$[x+1]
- done
- fi
- unset wynik
- for(( x=$[${#tabK[*]}-1] ; x>=0 ; x-- ))
- do
- wynik+=${tabK[x]}
- done
- export wynik
- }
- function naDziesietny {
- case $2 in
- 2) mnozoneZ=2 ;;
- 3) mnozoneZ=8 ;;
- 4) mnozoneZ=16 ;;
- esac
- liczba=$1
- unset tabK[*]
- dziesietnie=0
- potegaZKolei=$[${#liczba}-1]
- for(( x=0 ; x<${#liczba} ; x++ ))
- do
- if [ $2 -eq 4 ] ; then
- case "${liczba:$x:1}" in
- A|a) tabK[x]=10 ;;
- B|b) tabK[x]=11 ;;
- C|c) tabK[x]=12 ;;
- D|d) tabK[x]=13 ;;
- E|e) tabK[x]=14 ;;
- F|f) tabK[x]=15 ;;
- *) tabK[x]=${liczba:$x:1}
- esac
- else
- tabK[x]=${liczba:$x:1}
- fi
- potegowanie=1
- for(( p=$potegaZKolei ; p>0 ; p-- ))
- do
- potegowanie=$[potegowanie * mnozoneZ]
- done
- dziesietnie=$[dziesietnie + potegowanie * ${tabK[x]}]
- potegaZKolei=$[potegaZKolei-1]
- done
- export dziesietnie
- }
- wybor=-1
- #dziesietnie, wynik - eksportowane z pliku 'funkcje'
- for(( ; ; ))
- do
- clear
- echo 'Z jakiego systemu chcesz przeliczac?'
- echo '1 - z dziesietnego'
- echo '2 - z dwojkowego'
- echo '3 - z osemkowego'
- echo '4 - szesnastkowego'
- echo '5 - zakoncz skrypt'
- f=0
- until [ $f -eq 1 ]
- do
- read -p "Wybierz opcje wpisujac odpowiednia cyfre: " wybor
- if [ 1 -le $wybor ] && [ $wybor -le 5 ] ; then
- f=1
- else
- echo 'Podano nieprawidlowa wartosc'
- fi
- done
- if [ $wybor -eq 5 ] ; then
- clear
- break
- else
- zKtorego=$wybor
- fi
- case $wybor in
- 1) slownieZJakiego=dziesietnego ;;
- 2) slownieZJakiego=binarnego ;;
- 3) slownieZJakiego=osemkowego ;;
- 4) slownieZJakiego=szesnastkowego ;;
- esac
- read -p "Podaj liczbe do konwersji: " liczba
- clear
- echo 'Na jaki system chcesz przeliczyc'
- echo '1 - na dziesietny'
- echo '2 - na dwojkowy'
- echo '3 - na osemkowy'
- echo '4 - na szesnastkowy'
- echo '5 - zakoncz skrypt'
- f=0
- until [ $f -eq 1 ]
- do
- read -p "Wybierz opcje wpisujac odpowiednia cyfre: " wybor
- if [ 1 -le $wybor ] && [ $wybor -le 5 ] ; then
- if [ $wybor -eq $zKtorego ] ; then
- echo 'Podana przez ciebie liczba jest zapisana tym systemie'
- else
- f=1
- fi
- else
- echo 'Podano nieprawidlowa wartosc'
- fi
- done
- if [ $wybor -eq 5 ] ; then
- clear
- break
- else
- naKtory=$wybor
- fi
- case $wybor in
- 1) slownieNaJaki=dziesietny ;;
- 2) slownieNaJaki=binarny ;;
- 3) slownieNaJaki=osemkowy ;;
- 4) slownieNaJaki=szesnastkowy ;;
- esac
- echo -n Liczba $liczba z $slownieZJakiego na $slownieNaJaki:' '
- if [ $zKtorego -eq 1 ] ; then
- # eksportowana zmienna 'wynik'
- naInny $liczba $naKtory
- else
- naDziesietny $liczba $zKtorego
- # po zakonczeniu funkcji naDziesietny eksportowana jest zmienna dziesietnie
- if [ $naKtory -eq 1 ] ; then
- wynik=$dziesietnie
- else
- naInny $dziesietnie $naKtory
- fi
- fi
- echo -n $wynik
- read
- done
Advertisement
Add Comment
Please, Sign In to add comment