#!/usr/bin/w.ish8.4 -f
#-------------------VARIABLES
global valeur entree;
global valeur nouvelle;
global base_entree;
global nouvelle_base;
global resultat verifie;
global chiffres;
#--------------------PROCEDURES
proc Verifie_La_Base { } {
global valeur entree;
global base_entree;
global resultat verifie;
set max [string length $valeur_entree];
for {set i 0} { $i < $max } {incr i} {set pos [string index $valeur_entree $i];if { $pos > $base entree } {set resultat_ verifie 0;break;break;}; #end of if};#end of for
}#;end of Verifie_La_Base
#-----------------------
proc Retour_Base_Decimale { } {
global valeur entree;
global base_entree;
global valeur decimale;
set valeur base10 0;
set max [string length $valeur_entree];
for { set i 0 } { $i < $max } {incr i } {set indice_pos [string index $valeur_entree $i];set valeur_base10 [expr $valeur_base10*$base_entree + $indice_pos]; } ;#end of for
set valeur_decimale $valeur base10;
};#end of Retour_Base_Decimale
#-------------------------
proc Changement_De_Base { valeur } {
global chiffres;
gobal valeur entree;
gobal base_entree;
global base nouvelle;
global valeur nouvelle;
if { $valeur > 0 } {set modulo [expr int(fmod($valeur,$base_nouvelle)) ];puts "modulo \= $modulo";set indice [string index $chiffres $modulo];puts "indice \= $indice";set valeur nouvelle [append indice $valeur_nouvelle];
puts "valeur nouvelle \= $valeur_nouvelle";set valeur [expr int($valeur / $base_nouvelle) ];puts "diminution de la valeur \= $valeur";Changement_De_Base $valeur;};#end of if
};#end of Changement_De_Base
#----------------------- DEBUT DU PROGRAMME
#----------------------- VALEURS ENTREES
puts stdout "Veuillez donner la valeur d'entree dans sa base indiquée ci-dessous";
gets stdin valeur_entree;
puts stdout "Veuillez donner la base d'entrée";
gets stdin base_entree;
puts stdout "Veuillez donner la nouvelle base pour effectuer le changement de base";
gets stdin base_nouvelle;
#---------------------- PROGRAMME
set chiffres "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
set valeur_entree [string toupper $valeur_entree];
puts $valeur_entree;
set resultat verifie 1;
Verifie_La_Base;
if { $resultat verifie == 0 } {puts "La valeur d'entree n'est pas conforme à la base indiquée en entrée"; } else {if { $base entree != 10 } {Retour_Base_Decimale;} else {set valeur_decimale $valeur_entree;};#end of ifputs "$valeur_decimale";set valeur_indiquee $valeur_decimale;set valeur nouvelle "";Changement_De_Base $valeur_indiquee;puts "$valeur_entree en base $base_entree \= $valeur_nouvelle en base $base_nouvelle";} ;#end of if
--------------------------------------------------------------------------------
Dernière modification par Alcatîz 01/07/2007 à 11h42. Motif: balises code au lieu de quote