Telechargé par hafsa elalami

programme

publicité
Architecture des Ordinateurs/Assembleurs


Conversion des nombres
Un programme permettant de convertir un nombre d'une base A vers une base B (A et B
compris entre 2 et 16).
 Fait par:
- EL ALAMI Hafsa
- EL BRAHIMI Meriem
Voila l'algorithme finale:
//début de l'algorithme
{//déclaration des variables
BD,BF,P=1,V,X,n,j, taille :entier;
/* BD(base de départ la base qui sera convertir)
BF(la base final)
P=1 pour calcul les puissances
Taille c'est la taille de le nombre nombre de chiffres
j,n des pas*/
H[1000],K[100] : Caractère;
//lecture des données
répéter {écris ("donner la base de depart entre 2 et 16:\n"); //lecture de la base de depart
lis(BD);
écris ("donner la base finale entre 2 et 16 :\n"); // lecture de la base finale
lis(BF);
}
tant que (((BD<2)ou(BD>16))ou((BF<2)ou(BF>16)));
// Les bases ne doivent pas être inferieur a 2 ou bien supérieur a 16
écris("donner le nombre que vous souhaitez convertir \n"); //demande à l’utilisateur de saisir le
nombre
lis(H);
écris("*********\n"); // pour séparer entre les données et les résultat
//traitement
Taille=la taille de tableau H ; // calcule de nombre de caractère qui se trouve dans la chaine.
//1 er étape conversion a la base décimale
Pour j allant de taille -1 à 0 par pas de un pas fait
/*convertir le nombre à la base décimal en utilisant le tableau suivant :
On a utilisé ce tableau pour afficher les lettres qui se trouvent dans les bases supérieur à 10.
Expl : A en dec 65 donc on soustrait 55 pour A sera =10 */
{si ((H[j]>='0')et(H[j]<='9'))
{V=V+(H[j]-48)*P;
P=P*BD;
}
sinon si((H[j]>='A')et(H[j]<='F'))
{V=V*(H[j]-55)*P;
P=P*BD;}}
// Affichage du nombre décimale après la conversion
écris ("nombre en décimal = V\n");
// Conversion de décimale a la base désiré en utilisant le même tableau
écris ("**** conversion a la base désiré ****\n");
Pour n allant de 0 à V>0 par pas de un pas fait
{X= V%BF ; // le reste de la division
Si(X<10)
{K[n]=48 + X ;}
Sinon
{K[n]=55+X ;}
V=V/BF ;}
//Edition
// Affichage du caractère final après la conversion
écris ("\n votre nombre dans la base BF est = ");
Pour n allant de n-1 à 0 par pas de pas fait
{écris (" K[n]");}
//fin de l'algorithme}
Le programme final:
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include <string.h>
int main ()
{ int BF,BD,i,X,M=0,V,j=0,P=1,n,taille;
char H[1000],K[100];
do{
printf("donner la base de depart entre 2 et 16:\n");
scanf("%d",&BD);
printf("donner la base finale entre 2 et 16 :\n");
scanf("%d",&BF);
}while(((BD<2)||(BD>16))||((BF<2)||(BF>16)));
printf("donner le nombre que vous souhaitez convertir \n");
scanf ("%s",&H);
printf("*********\n");
taille=strlen(H);
for(j=taille-1;j>=0;j--)
{
if((H[j]>='0')&&(H[j]<='9'))
{V+=(H[j]-48)*P;
P*=BD;
}
else if((H[j]>='A')&&(H[j]<='F'))
{V+=(H[j]-55)*P;
P*=BD;
}}
printf("nombre en decimal = %d\n", V);
printf("**** converssion a la base desire ****\n");
for(n=0; V> 0; n++)
{
X= V%BF;
if (X<10)
{
K[n]=48 + X;}
else
{K[n]=55+X;
}
V=V/BF;}
printf("\n votre nombre dans la base %d est = ",BF);
for(n=n-1; n >= 0; n--)
{
printf("%c ",K[n]);
} }
Téléchargement