# 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