Conversion
delavega470
Messages postés
298
Date d'inscription
Statut
Membre
Dernière intervention
-
delavega470 Messages postés 298 Date d'inscription Statut Membre Dernière intervention -
delavega470 Messages postés 298 Date d'inscription Statut Membre Dernière intervention -
bonjour à tous j'ai fais cet exercice mais quand je fais la conversion de 12 par exemple en base 2 cela me donne 0011 au lieu de 1100 je ne sais pas comment inverser le reste de chaque division
help me svp
<code c>
#include <stdio.h>
#include <stdlib.h>
int nb,r,q,i,b;
int main()
{
printf("Entrer le nombre positif\n");
do{
scanf("%i",&nb);
}while(nb<=0);
do{
printf("Entrer la base 2, 8 ou 16\n");
scanf("%i",&b);
}while(b!=2 && b!=8 && b!=16);
switch(b){
//conversion en base 2
case 2:
printf("(lecture de droite a gauche\n");
printf("Votre nombre en base 2 est:\n");
do{ i=0;
q=nb/2;
r=nb-2*q;
nb=q;
printf("%i",r);
}while(q!=0);break;
case 8:
printf("lecture de droite a gauche");
printf("Votre nombre en base 8 est:\n");
do{
q=nb/8;
r=nb-8*q;
printf("%i",r);
nb=q;
}while(q!=0);break;
case 16:
printf("lecture de droite a gauche\n");
printf("Votre nombre en base 16 est:\n");
do{
q=nb/16;
r=nb-16*q;
switch(r){
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:printf("%i",r);
}
nb=q;
}while(q!=0);break;
}printf("\n");
system("pause");
return 0;
}
</code c>
help me svp
<code c>
#include <stdio.h>
#include <stdlib.h>
int nb,r,q,i,b;
int main()
{
printf("Entrer le nombre positif\n");
do{
scanf("%i",&nb);
}while(nb<=0);
do{
printf("Entrer la base 2, 8 ou 16\n");
scanf("%i",&b);
}while(b!=2 && b!=8 && b!=16);
switch(b){
//conversion en base 2
case 2:
printf("(lecture de droite a gauche\n");
printf("Votre nombre en base 2 est:\n");
do{ i=0;
q=nb/2;
r=nb-2*q;
nb=q;
printf("%i",r);
}while(q!=0);break;
case 8:
printf("lecture de droite a gauche");
printf("Votre nombre en base 8 est:\n");
do{
q=nb/8;
r=nb-8*q;
printf("%i",r);
nb=q;
}while(q!=0);break;
case 16:
printf("lecture de droite a gauche\n");
printf("Votre nombre en base 16 est:\n");
do{
q=nb/16;
r=nb-16*q;
switch(r){
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:printf("%i",r);
}
nb=q;
}while(q!=0);break;
}printf("\n");
system("pause");
return 0;
}
</code c>
A voir également:
- Conversion
- Logiciel gratuit conversion calendrier républicain - Télécharger - Études & Formations
- Monnaie conversion - Télécharger - Banque & Budget
- Conversion bytes en mo ✓ - Forum Programmation
- 2k€ conversion ✓ - Forum Bureautique
- Conversion mb en mo ✓ - Forum Matériel & Système
2 réponses
salut, au pire stoque chaques elements puis affiche les à l'envers
Pour faire directement un algo dans l'autre sens si tu reste en base 2^n tu peux utiliser des masques.
Pour faire directement un algo dans l'autre sens si tu reste en base 2^n tu peux utiliser des masques.
salut! moi j'ai l'habitude d'utiliser une boucle FOR, le principe est simple après avoir calculé puis enregistré dans un tableau des restes possibles de ce nombre par 2, vous utilisez une décrémentation pour afficher le résultat. voici un exemple:
printf(" Ici vous changerez un nombre en base 2\n");
printf(" Entrer la valeur de a :\n");
scanf("%d", &a);
for(i=0; a!=0; i++)
{
tableau[i]=a%2;
a=(a-tableau[i])/2;
}
printf("%d en base 2 = \t",a);
for(j=i-1; j>=0 ; j--)
printf("%d",tableau[j]);
return 0;
printf(" Ici vous changerez un nombre en base 2\n");
printf(" Entrer la valeur de a :\n");
scanf("%d", &a);
for(i=0; a!=0; i++)
{
tableau[i]=a%2;
a=(a-tableau[i])/2;
}
printf("%d en base 2 = \t",a);
for(j=i-1; j>=0 ; j--)
printf("%d",tableau[j]);
return 0;
j'ai refais mais j'ai un souci au niveau de la base 16
<code c>#include <stdio.h>
#include <stdlib.h>
int nb,r,q,i,b,j,t[8];
int main()
{ system("color FC");
printf("Entrer le nombre positif\n");
do{
scanf("%i",&nb);
}while(nb<=0);
do{
printf("Entrer la base 2, 8 ou 16\n");
scanf("%i",&b);
}while(b!=2 && b!=8 && b!=16);
switch(b){
//conversion en base 2
case 2:
for(i=0; nb!=0; i++)
{
t[i]=nb%2;
nb=(nb-t[i])/2;
} system("color FC");
printf(" le resultat base 2 = \t");
for(j=i-1; j>=0 ; j--)
{
printf("%d",t[j]);
} break;
//conversion en base 8
case 8:
for(i=0; nb!=0; i++)
{
t[i]=nb%8;
nb=(nb-t[i])/8;
}
printf(" le resultat base 8 = \t");
for(j=i-1; j>=0 ; j--)
{
printf("%d",t[j]);
} break;
//conversion en base 16
case 16:
for(i=0; nb!=0; i++)
{
t[i]=nb%16;
nb=(nb-t[i])/16;
switch(t[i]){
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:printf("%i",t[j]);
for(j=i-1; j>=0 ; j--)
{
printf("%d",t[j]);
} break;
}
}
}
return 0;
}
</code c>
<code c>#include <stdio.h>
#include <stdlib.h>
int nb,r,q,i,b,j,t[8];
int main()
{ system("color FC");
printf("Entrer le nombre positif\n");
do{
scanf("%i",&nb);
}while(nb<=0);
do{
printf("Entrer la base 2, 8 ou 16\n");
scanf("%i",&b);
}while(b!=2 && b!=8 && b!=16);
switch(b){
//conversion en base 2
case 2:
for(i=0; nb!=0; i++)
{
t[i]=nb%2;
nb=(nb-t[i])/2;
} system("color FC");
printf(" le resultat base 2 = \t");
for(j=i-1; j>=0 ; j--)
{
printf("%d",t[j]);
} break;
//conversion en base 8
case 8:
for(i=0; nb!=0; i++)
{
t[i]=nb%8;
nb=(nb-t[i])/8;
}
printf(" le resultat base 8 = \t");
for(j=i-1; j>=0 ; j--)
{
printf("%d",t[j]);
} break;
//conversion en base 16
case 16:
for(i=0; nb!=0; i++)
{
t[i]=nb%16;
nb=(nb-t[i])/16;
switch(t[i]){
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:printf("%i",t[j]);
for(j=i-1; j>=0 ; j--)
{
printf("%d",t[j]);
} break;
}
}
}
return 0;
}
</code c>