All pastes #628032 Raw Edit

tymop

public text v1 · immutable
·published 2007-07-20 18:07 UTC
rendered paste body
#  Nb[i]              | Div
#  Nbsous[i]          \ Result
#    Reste[i]         \
#    Nbsous[i+1]      \
#       Reste[i+1]    \
#             reste


#division_posee Nb[i] Div Niveau_de_calcul


Affiche () {
 Ntexte=0
 for Ntexte in 0 1 2 3 4
  do
  echo ${texte[Ntexte]}

  done
 echo ${Result[1]}
}

Formattexte () {
# écriture de la 1ere ligne
texte[0]=echo -e "\033[4m${Nb[1]}\033[0m"
niveau=2
while (( "$niveau" <= "$Ncalcul" ))
do
texte[$niveau]=${Nb_sous[niveau]}
niveau=$(( $niveau + 1 ))
done
}

Nb_chiffres () {
# trouve le nombre de chiffre du nombre à diviser
level=0
a=0
while [[ $a -le ${Nb[Ncalcul]} ]]
do
level=$(($level + 1))
let "a=10**$level"
done
}

Part_a_diviser () {
# Détermine la partie à diviser
#echo level $level Nb ${Nb[$Ncalcul]}
level_act=$level
let "Nb_act[$Ncalcul]=${Nb[Ncalcul]}/(10**$level_act)"
#echo ${Nb_act[Ncalcul]} / $Div
while [[ ${Nb_act[Ncalcul]} -lt $Div ]]
do
level_act=$(($level_act - 1))
let "Nb_act[$Ncalcul]=${Nb[Ncalcul]}/(10**$level_act)"
#echo ${Nb_act[Ncalcul]} / $Div
#echo ${Nb_act[$Ncalcul]}
done
}

calcul () {
Result[$Ncalcul]=$((${Nb_act[Ncalcul]}/$Div))
Nb_sous[$Ncalcul]=$((${Result[Ncalcul]}*$Div))
Reste[$Ncalcul]=$((${Nb_act[Ncalcul]}-${Nb_sous[Ncalcul]}))
result="$result${Result[Ncalcul]}"

let "Nb[$Ncalcul+1]=${Nb[Ncalcul]}+(${Reste[Ncalcul]}-${Nb_act[Ncalcul]})*(10**$level_act) "
}

Nb[1]=$1
Div=$2
Nb_initial=$1

Niveau_calcul=$3
virgule=0

reste=0
result=''
Ncalcul=1

echo -e "level \tNb_act \tresult \treste \tvirgule"

while [[ $virgule -lt $Niveau_calcul ]]
#[[ $Ncalcul -lt $Niveau_calcul ]]
do
echo $Div ${Nb[Ncalcul]}
	if [[ $Div -lt ${Nb[Ncalcul]} ]] ; then  #si divisable (pas de virgule)

		Nb_chiffres
		Part_a_diviser
		calcul
	
				
	else
		if [[ virgule -eq 0 ]] ; then
			result="$result."
			#virgule=1
		fi
		virgule=$(( $virgule + 1 ))

		let "(( Nb[$Ncalcul+1]=${Nb[((Ncalcul))]}*10 ))"
		
	fi


	echo -e "$Ncalcul\t${Nb_act[$Ncalcul]}\t${Result[$Ncalcul]}\t${Reste[$Ncalcul]}\t$virgule"
	Ncalcul=$(( $Ncalcul + 1 ))
done
Ncalcul=$(( $Ncalcul - 1 ))

echo
echo "${Nb[1]} = $result*$Div+${Reste[Ncalcul]}/($Div*10E$virgule)"




#niveau=1
#while (( "$niveau" <= "$Ncalcul" ))
#do
#echo -e "$niveau\t\t${Nb_act[$niveau]}\t\t${Result[$niveau]}\t\t${Reste[$niveau]}"
#niveau=$(( $niveau + 1 ))	
#done


# Affichage du calcul
#Formattexte
#Affiche