#!/bin/bash

# Conversion d'un nombre arabe en nombre romain
# Échelle : 0 - 200
# C'est brut, mais cela fonctionne.

# Étendre l'échelle et améliorer autrement le script est laissé en exercice.

# Usage: romain nombre-a-convertir

LIMITE=200
E_ERR_ARG=65
E_HORS_ECHELLE=66

if [ -z "$1" ]
then
  echo "Usage: `basename $0` nombre-a-convertir"
  exit $E_ERR_ARG
fi  

num=$1
if [ "$num" -gt $LIMITE ]
then
  echo "En dehors de l'échelle !"
  exit $E_HORS_ECHELLE
fi  

vers_romain ()   # Doit déclarer la fonction avant son premier appel.
{
nombre=$1
facteur=$2
rchar=$3
let "reste = nombre - facteur"
while [ "$reste" -ge 0 ]
do
  echo -n $rchar
  let "nombre -= facteur"
  let "reste = nombre - facteur"
done  

return $nombre
       # Exercice :
       # ---------
       # Expliquer comment fonctionne cette fonction.
       # Astuce : division par une soustraction successive.
}
   

vers_romain $nombre 100 C
nombre=$?
vers_romain $nombre 90 XC
nombre=$?
vers_romain $nombre 50 L
nombre=$?
vers_romain $nombre 40 XL
nombre=$?
vers_romain $nombre 10 X
nombre=$?
vers_romain $nombre 9 IX
nombre=$?
vers_romain $nombre 5 V
nombre=$?
vers_romain $nombre 4 IV
nombre=$?
vers_romain $nombre 1 I

echo

exit 0
