Language C / C++
Résolu
kamgamartinsbee
Messages postés
3
Date d'inscription
Statut
Membre
Dernière intervention
-
lami20j Messages postés 21331 Date d'inscription Statut Modérateur, Contributeur sécurité Dernière intervention -
lami20j Messages postés 21331 Date d'inscription Statut Modérateur, Contributeur sécurité Dernière intervention -
Bonjour,
j'aimerais bien que quelqu'un m'ecrive un proframme en C qui permet de convertir un nombre de la base decimale a une autre base(exemple: la base binaire ou la base 8).
Merci d'avance
je suis un etudiant en informatique et la programmation est mon paase temps.
J'attend vos suggestions.
j'aimerais bien que quelqu'un m'ecrive un proframme en C qui permet de convertir un nombre de la base decimale a une autre base(exemple: la base binaire ou la base 8).
Merci d'avance
je suis un etudiant en informatique et la programmation est mon paase temps.
J'attend vos suggestions.
A voir également:
- "Winamp language pack"
- Winamp - Télécharger - Lecture & Playlists
- Pack office pas cher - Guide
- Pack sérénité darty avis - Forum Consommation & Internet
- Windows 7 service pack 3 download 64 bit - Forum Windows 7
- French language pack is already installed. ✓ - Forum Windows
11 réponses
Salut,
tu peux essaie quelque chose de ce genre
tu peux essaie quelque chose de ce genre
#include <stdio.h> #include <string.h> int main (void) { int base, n, q, r, i; char resultat[20]; q = 1; i = 0; printf ("Entrez un numéro entier : "); scanf ("%d", &n); printf ("Entrez la base de conversion : "); scanf ("%d", &base); printf ("%d en base %d = ", n, base); while (q != 0){ q = n / base; r = n % base; n = q; if (r > 10) resultat[i++] = r + 55; else resultat[i++] = r + '0'; } resultat[i] = '\0'; for (i = strlen (resultat); i >= 0; --i) printf ("%c", resultat[i]); printf ("\n"); return 0; }
Bonjour,
demande a ton prof plutôt il sera content de t'apprendre qq chose en plus des cours (en plus tu sera bien vue :p)
par contre si c'est pour un tp, va bosser feignasse :)
enfin pour un étudiant en info tu pourrais au moins connaitre Google :p (je dis peut être des bêtises mais ce genre d'algo se trouve facilement sur le net vu que tu n'est pas le premier ni le dernier a en avoir besoin)
kardwane
demande a ton prof plutôt il sera content de t'apprendre qq chose en plus des cours (en plus tu sera bien vue :p)
par contre si c'est pour un tp, va bosser feignasse :)
enfin pour un étudiant en info tu pourrais au moins connaitre Google :p (je dis peut être des bêtises mais ce genre d'algo se trouve facilement sur le net vu que tu n'est pas le premier ni le dernier a en avoir besoin)
kardwane
Je peux te suggérer un algorithme (je ne connais pas encore le c) pour le passage de décimal à binaire, et tu convertiras en c puisque c'est ton passe-temps :)
dec=le nb décimal
//Tu divises par 2 successivement, et tu retiens les restes, (qui sont soit 1, soit 0), dans un tableau; le tout jusqu'a ce que le quotient vale zéro:
tant que (dec!=0){
retenue=dec-(arrondi_inférieur(dec/2))*2;
insérer la retenue dans le tableau;
dec=arrondi_inférieur(dec/2);
}
Tu ressorts les retenues dans l'ordre inverse; ex: 0,puis1, puis 1==> doit donner 1 1 0
dec=le nb décimal
//Tu divises par 2 successivement, et tu retiens les restes, (qui sont soit 1, soit 0), dans un tableau; le tout jusqu'a ce que le quotient vale zéro:
tant que (dec!=0){
retenue=dec-(arrondi_inférieur(dec/2))*2;
insérer la retenue dans le tableau;
dec=arrondi_inférieur(dec/2);
}
Tu ressorts les retenues dans l'ordre inverse; ex: 0,puis1, puis 1==> doit donner 1 1 0
Salut,
Pour t'aider un peu dans ta recherche, j'ai pas eu le temps de faire le code... mais voilà
La conversion
http://www.positron-libre.com/cours/numeration/conversion-decimal-binaire-hexadecimal.htm
Pour le langage C, regarde l'instruction arithmétique modulo. Je sais plus si c'est [] ou % en C.
Pour t'aider un peu dans ta recherche, j'ai pas eu le temps de faire le code... mais voilà
La conversion
http://www.positron-libre.com/cours/numeration/conversion-decimal-binaire-hexadecimal.htm
Pour le langage C, regarde l'instruction arithmétique modulo. Je sais plus si c'est [] ou % en C.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
juste pour revenir sur l'algo de ilan,je peut me tromper mais la condition de sortie du tant que n'as pas l'air bonne.
Je m'explique, le binaire c'est 1 ou 0 or ta condition de sortie ne prend en compte que le 0, la place je mettrai :
tq(dec!=1 ou dec!=0) {ton traitement...}
Je m'explique, le binaire c'est 1 ou 0 or ta condition de sortie ne prend en compte que le 0, la place je mettrai :
tq(dec!=1 ou dec!=0) {ton traitement...}
Pour repondre a karwane, dis moi si je me trompe, mais mon "dec" est en fait le nombre, successivement divisé par 2. Donc ma condition est: tant qu'il ne vaut pas zero, c'est-à-dire tant qu'on peut encore diviser utilement, sans rajouter des 0 au tableau.
je suis d'accord avec toi dans l'optique ou le résultat obtenu fini par 0, mais imaginons qu'aprés n tour de boucle il te reste 1, ta boucle deviendra inutile vu qu'un nombre binaire peut se finir par 1 ^^.
Tu l'as dit toi meme plus haut "//Tu divises par 2 successivement, et tu retiens les restes, (qui sont soit 1, soit 0)"
d'ailleurs quand tu dit "c'est-à-dire tant qu'on peut encore diviser utilement, sans rajouter des 0 au tableau." tu considère que la division 1/2 est utile dans se contexte et la je ne suis pas d'accord ^^.
enfin ceci n'engage que moi.
cordialement,
kardwane
Tu l'as dit toi meme plus haut "//Tu divises par 2 successivement, et tu retiens les restes, (qui sont soit 1, soit 0)"
d'ailleurs quand tu dit "c'est-à-dire tant qu'on peut encore diviser utilement, sans rajouter des 0 au tableau." tu considère que la division 1/2 est utile dans se contexte et la je ne suis pas d'accord ^^.
enfin ceci n'engage que moi.
cordialement,
kardwane
Bon, là on est un peu hors sujet, mais dans le cas où il reste 1, retenue vaut 1, et après, dec vaut 0, et la boucle est finie. Tu n'as qu'à essayer, ça marche. :)
Et 1/2 est utile, enfin je ne vois pas en quoi elle serait inutile puisqu'il reste 1, on ne le met pas de côté... :)
Bonne soirée.
ilan27
Et 1/2 est utile, enfin je ne vois pas en quoi elle serait inutile puisqu'il reste 1, on ne le met pas de côté... :)
Bonne soirée.
ilan27
salut !!!!!!!
je voudrais avoir des explication sur cette partie du programme :
if (r > 10)
resultat[i++] = r + 55;
else
resultat[i++] = r + '0';
}
resultat[i] = '\0';
for (i = strlen (resultat); i >= 0; --i)
printf ("%c", resultat[i]);
printf ("\n");
return 0;
}
et si j'aimerais utiliser une pile pour empiler les resultat comment proceder .
svp merci d'avance
je voudrais avoir des explication sur cette partie du programme :
if (r > 10)
resultat[i++] = r + 55;
else
resultat[i++] = r + '0';
}
resultat[i] = '\0';
for (i = strlen (resultat); i >= 0; --i)
printf ("%c", resultat[i]);
printf ("\n");
return 0;
}
et si j'aimerais utiliser une pile pour empiler les resultat comment proceder .
svp merci d'avance
Salut,
Pour créer une pile en utilisant une liste chaînée regarde ici Les piles en langage C
// si le reste de la division est plus grande que 10 if (r > 10) // il me semble que ici c'est >= // nous avons un tableau de caractères // ils nous fous selon le systèm héxadécimal // A, B, C, D, E et F // A à le code ascii 65 // B - 66 // et ainsi de suite jusqu'à F - 70 // 10 + 55 - donne 65 qui est le code ascii de A // 11 + 55 - donne 66 qui est le code ascii de B // pour F - 15 + 55 = 70 resultat[i++] = r + 55; else // sinon on écrit le caractèr de 0 à 9 // le code ascii de 0 est 48 // le code ascii de 9 est 57 // donc en aditionnant le reste avec le code ascii de caractère 0 // on obtiens le caractère correspondant pour le reste // entier 0 => 0 + '0' = 0 + 48 = 48 => code ascii caractère 0 // entier 1 => 1 + '0' = 1 + 48 = 49 => code ascii caractère 1 // entier 9 => 9 + '0' = 9 + 48 = 57 => code ascii caractère 9 resultat[i++] = r + '0'; } resultat[i] = '\0'; // la chaine obtenu est dans le sens inverse. // pour l'écrire dans l'ordre on lit le tableah char // en sens inverse for (i = strlen (resultat); i >= 0; --i) // et on affiche les caractères printf ("%c", resultat[i]); printf ("\n"); return 0; }
Pour créer une pile en utilisant une liste chaînée regarde ici Les piles en langage C