Autre programme de conversion de bases de ma fabrication qui permet de convertir n'importe quelle base en n'importe quelle autre.(sauf au-dela de la base 36, bien sur).
Fonctionnement : on entre la base d'entrée, puis la base de sortie, puis le nombre à convertir, et hop, c'est parti !
Code
EffEcr
Input "ENTREE=",E
Input "SORTIE=",S
Input "NOMBRE=",Chaine0
"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"->Chaine1
If E>35 ou E<2 ou S>35 ou S<2 //Test de la validité des bases
Then d'entrée et de sortie
Output(5,1,"PAS POSSIBLE
Stop
End
For(X,1,longueur(Chaine0 //Test de la validité du
sous-chaine(Chaine0,X,1)->Chaine3 nombre à convertir
If Chaine3="-" ou Chaine3="+" ou Chaine3="(" ou Chaine3=")" ou Chaine3="/" ou Chaine3="."
Then
Output(5,1,"PAS POSSIBLE
Stop
End
End
Output(5,1,">
0->Q
">"->Chaine2
For(X,longueur(Chaine0),1,-1
1->I
While sous-chaine(Chaine0,X,1)!=sous-chaine(Chaine1,I,1)
1+I->I
End
Q+(I-1)*E^(longueur(Chaine0)-X)->Q
End
If S=10 //Le nombre est convertit en décimal avant d'être
Then convertit dans la base de sortie. Si, par hasard,
Output(5,2,Q la base de sortie est 10, le programme ne fait
Stop plus le calcul et affiche directement le nombre.
End
While Q!=0 //Conversion du ombre en base 10 dans la base
partEnd(Q/S)->P souhaitée
Q-SP->R
sous-Chaine(Chaine1,R+1,1)+Chaine2->Chaine2
P->Q
End
Output(5,2,sous-Chaine(Chaine2,1,longueur(Chaine2)-1
J'ai bien vérifié le code ; j'espère qu'aucune erreur ne s'est glissée.