Les Fous du Binaire
Les Fous du Binaire
Les Fous du Binaire
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.


Imaginez un forum qui vous aide a comprendre vos cours d'informatique vos propose des exercices (solutionner / non solutionner), vos aide a réaliser vos Tp d'informatique...& plein d'autre choses intéressantes Un tel forum est : les Fous du Binaire
 
AccueilPortailRechercherDernières imagesS'enregistrerConnexion
-11%
Le deal à ne pas rater :
Smartphone 6.36 ” Xiaomi 14 (12 Go / 256 Go
641 € 719 €
Voir le deal

 

 programme de conversion

Aller en bas 
2 participants
AuteurMessage
HOUSSAINE

HOUSSAINE


Messages : 5
Points : 5338
Date d'inscription : 11/03/2010

programme de conversion Empty
MessageSujet: programme de conversion   programme de conversion I_icon_minitimeDim 11 Avr - 5:38

bonjours ....
[/code]ce programme convertir un entier positif dans une base (entre 1-16) vres d'autre base (entre 1-16)
Code:
#include<stdio.h>
#include<math.h>
#define N 100
int longeur(char tab[])
{
 int m=0;
 char *p;
 p=tab;
  while(*p)
 {
  m++;p=p+1;
 
 }
return m;
}
 
main()
{
 char nbr[N],correc[N];
        int i=0,j,B1,l=0,tab[N],rest[N],q,B2,ps[N],k=0;
 long int nbDec=0;
 

 printf("donner la base de nombre à convertir :");
 scanf("%d",&B1);
 while(B1>16)                            // contrle de saisir de base
 {
  printf("la base doit etre infirieur à 16\nsaisir de nouveau la base:\n");
    scanf("%d",&B1);
 }
 printf("entrer le nombre a convertir ");
 scanf("%s",nbr);

    //calcule de longeur de nombre
 
      l=longeur(nbr);
      printf("longeur=%d\n",longeur(nbr));

      // controle de saisir pour le nombre
  do{
  switch (nbr[i])
    {
   
              case '0' : i++;break;
              case '1' : i++;break;
              case '2' : i++;break;
              case '3' : i++;break;
              case '4' : i++;break;
              case '5' : i++;break;
              case '6' : i++;break;
              case '7' : i++;break;
              case '8' : i++;break;
              case '9' : i++;break;
              case 'A' : i++;break;
              case 'B' : i++;break;
              case 'C' : i++;break;
              case 'D' : i++;break;
              case 'E' : i++;break;
              case 'F' : i++;break;
              default  :{ printf("les chiffres doient appartient a le domaine {0,1,....A,B..F}\n");
                          printf("resaisir le nombre ");
        scanf("%s",nbr);i=0;l=longeur(nbr);}
        }
  }while(i<l);
 
    //  tester l'appartenance des chiffres à le domaine de la base B1
for(i=0;i<l;i++)
{
 if(B1<10)  // les chiffres appartient a {0;1;....;9} 
  {
 while((int)nbr[i]-48>=B1) 
  {
  correc[k]=nbr[i+1];ps[k]=i+1;k++;    //correction de la  mémoire
  printf("le chiffre doit appartient a :{");
  for(j=0;j<B1;j++)
  printf("%d;",j);printf("}\n");
  printf("changer le chiffre de position %d:",i);
  scanf("%s",&nbr[i]);
  }
 
  }
if(B1>=10)                  // les chiffres appartient a {0;1;2;....;9;A/a;B/b;C/c;D/d;E/e;F/f}
  {
 
 if((int)nbr[i]>=65 && (int)nbr[i]<=70)                      // les caractères en majiscule
  {
  while((int)nbr[i]-55>=B1)
  { 
          correc[k]=nbr[i+1];ps[k]=i+1;k++;                          //correction de la  mémoire
  printf("les chiffres doient appartenir a :{1;2;3;4;5;6;7;8;9;");
  for(j=65;j<B1+55;j++)
    printf("%c;",(char)j);printf("}\n");
  printf("changer le chiffre de position %d:",i);
  scanf("%s",&nbr[i]);
  }
  }
  }
}

for(j=0;j<k;j++)                    // recuperer les valeurs perdues
{
 for(i=0;i<l;i++)
  if(i==ps[j])nbr[i]=correc[j];
}

// convertir le nombre de base B1 à la base décimal

for(i=0;i<l;i++)
{
 if((int)nbr[i]>=48 && (int)nbr[i]<=57)
 tab[i]=(int)nbr[i]-(int)'0';
  if((int)nbr[i]>=65 && (int)nbr[i]<=70)
  tab[i]=(int)nbr[i]-(int)'A'+10;
  if((int)nbr[i]>=97 && (int)nbr[i]<=102)
  tab[i]=(int)nbr[i]-(int)'F'+10;
}
printf("\n");
 
for(i=0;i<l;i++)
{printf("%d_",tab[i]);
nbDec=nbDec+tab[i]*pow(B1,l-1-i);
}
printf("\n");
printf("le nombre en base decimal est :");
printf("%ld\n",nbDec);
                                              //convertire à la base B2
  // convertion si B2!=10
printf("donner la base à ou vos voulez convertir");
scanf("%d",&B2);
if(B2!=10)
{
            while(B1>16)                            // controle de saisir de base
 {
  printf("la base doit etre infirieur à 16\nsaisir de nouveau la base:\n");
    scanf("%d",&B2);
 }
      i=0;
 do{
  q=nbDec/B2;
  rest[i]=nbDec%B2;
  nbDec=q;
  i++;
            }while(q>0);
 for(j=i-1;j>=0;j--)
 {
  if(rest[j]>9)
  {
  switch (rest[j])
  {
                                                case 10 : printf("A");break;
                                                case 11 : printf("B");break;
                                                case 12 : printf("C");break;
                                                case 13 : printf("D");break;
                                                case 14 : printf("E");break;
                                                case 15 : printf("F");break;
        default:break;
  }
  }
  else printf("%d",rest[j]);
              }
 printf("\n");
    }
 
}
Revenir en haut Aller en bas
TSDI2008

TSDI2008


Masculin Messages : 34
Points : 5316
Date de naissance : 12/08/1985
Date d'inscription : 27/08/2010
Age : 39
Localisation : laayoune
Emploi/loisirs : etudiant

programme de conversion Empty
MessageSujet: Re: programme de conversion   programme de conversion I_icon_minitimeLun 25 Oct - 3:35

merci M HOUSSAINE pour le code
Revenir en haut Aller en bas
http://tsdi2008.skyrock.com
 
programme de conversion
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» un programme d' horloge
» trois programme de graphique
» programme Java Matrice
» petit programme de convertir

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Les Fous du Binaire :: Programmation :: Langage C-
Sauter vers: