Conversion
delavega470
Messages postés
316
Statut
Membre
-
delavega470 Messages postés 316 Statut Membre -
delavega470 Messages postés 316 Statut Membre -
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
- 2k€ conversion ✓ - Forum Bureautique
- Convertir en k€ ✓ - Forum Audio
- Conversion mb en mo ✓ - Forum Bureautique
- Conversion bytes en mo ✓ - Forum Programmation
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>