Language C / C++
Résolu/Fermé
kamgamartinsbee
Messages postés
3
Date d'inscription
mardi 2 octobre 2007
Statut
Membre
Dernière intervention
24 octobre 2007
-
2 oct. 2007 à 17:03
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 - 29 janv. 2009 à 07:49
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 - 29 janv. 2009 à 07:49
A voir également:
- "Winamp language pack"
- Winamp - Télécharger - Lecture & Playlists
- Driver pack - Télécharger - Divers Utilitaires
- Pack office pas cher - Guide
- Autocad 2008 language pack french - Forum AutoCAD
- Pack sérénité darty avis - Forum Consommation & Internet
11 réponses
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
3 oct. 2007 à 00:39
3 oct. 2007 à 00:39
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
ilan27
Messages postés
394
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
15 juin 2009
36
2 oct. 2007 à 17:15
2 oct. 2007 à 17:15
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
Lolo38Lolo
Messages postés
215
Date d'inscription
mardi 15 avril 2003
Statut
Membre
Dernière intervention
20 novembre 2007
22
2 oct. 2007 à 17:24
2 oct. 2007 à 17:24
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...}
ilan27
Messages postés
394
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
15 juin 2009
36
2 oct. 2007 à 17:35
2 oct. 2007 à 17:35
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
ilan27
Messages postés
394
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
15 juin 2009
36
2 oct. 2007 à 18:12
2 oct. 2007 à 18:12
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
kamgamartinsbee
Messages postés
3
Date d'inscription
mardi 2 octobre 2007
Statut
Membre
Dernière intervention
24 octobre 2007
24 oct. 2007 à 20:28
24 oct. 2007 à 20:28
les gars vous etes magnifiques ca fonctionne tres tres bien.
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
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
29 janv. 2009 à 07:49
29 janv. 2009 à 07:49
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