Programme de Conversion base 10 vers 16 et inversement. - Algo - Programmation
Marsh Posté le 11-04-2015 à 16:58:49
Oui je sais bien, mais j'dois absolument le faire sans passer par une fonction déjà accessible.
J'dois le faire "manuellement".
Merci de ta réponse !
Marsh Posté le 11-04-2015 à 17:46:32
http://stackoverflow.com/questions [...] onversions
Voila, si tu veux le nombre final (485) et non pas juste chaque nombre un par un, garde un compteur du nombre de fois ou tu as divisé.
Et fait 4 * 10 ^ 2 + 8 * 10 ^ 1 + 5 * 10 ^ 0 et t'auras un integer avec 485 dedans comme il faut, correspondant au 1025 de la base 15.
Marsh Posté le 11-04-2015 à 18:06:50
Base 15 ?
Pourquoi base 15?
C'est de l'héxadécimal que je cherche à avoir.
(Désolé, j'suis "novice" en algo).
Marsh Posté le 11-04-2015 à 20:52:44
Ouaip, j'vais continuer de réfléchir un peu.
Merci beaucoup
Marsh Posté le 12-04-2015 à 06:42:55
smxme a écrit : Base 15 ? |
J'ai une très grosse flemme, mais bon je suis de bonne humeur aujourd'hui
Code :
|
PS: je sais pas si vector est de ton niveau, si besoin tente de remplacer ca par -par exemple- un tableau de mille cases ou une merde du genre.
PS2: oué j'ai la flemme
PS3: techniquement iter sert a rien, puisque tu pourrais utiliser vector.size() qui te donnerai le nombre de cases utilisés, ce qui reviendrait au même que iter.
PS4: code pas testé, mais l'idée est là.
PS5: printBase10 sert a prendre les résultats, et à faire un nombre présentable en base 10, ce qui te permet d'afficher le nombre "base 16" sans te soucier de l'affichage (qui lui sera en base 10)
PS6: désolé j'avais pas vu que c'était pas du code mais de l'algo, bon ben prend l'idée et transforme ca en algorithmique
Marsh Posté le 12-04-2015 à 20:05:06
Salut tout l'monde, j'vous fait un retour. J'me suis poser au calme avec une feuille, et voilà ce que j'ai (ca fonctionne) :
string unHex;
char tabHex[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'}
int unEntier;
int reste;
while (unEntier >16){
reste = unEntier % 16;
unEntier = unEntier / 16;
unHex = tabHex[reste] + unHex;
}
unHex = tabHex[unEntier] + unHex;
unEntier = unEntier/16;
cout << unHex << endl;
Voila, maintenant j'dois faire dans le sens inverse, et la j'galère a mort !
Marsh Posté le 11-04-2015 à 16:29:52
Bonjour à tous.
Je dois réaliser un programme en C++ permettant de faire une conversion de base 10 vers 16, et inversement, à travers un petit menu simple.
Le problème est que je n'arrive pas à convertir parfaitement de décimal à hexadécimal.
Voici ce que je fais : Je déclare un tableau de caractère de 16 cases. (0-15), contenant les digits de la base hexa (0 1 2 3 4 5 6 7 8 9 A B C D E F).
Je déclare un int unEntier, une string unHex, et mon tabHex[16].
Tant que unEntier > 0
unHex =unHex + tabHex[unEntier / 16] // On concatène les chaines.
unEntier = unEntier / 16
fintantque
On affiche le résultat.
Le problème est que pour la dernière partie de la conversion, ca ne fonctionne pas , par exemple je veux convertir 85 (54 en hexa).
85 / 16 = 5.3 (5 puisque entier).
tabHex[5] = 5, on aura donc unHex = "5".
On continue : 5/16 = 0, quelquechose. (0 puisque entier). On obtient donc unHex="50".
Comment faire pour traiter cette dernière partie? Je dis que si unEntier <16 , alors je dois faire unHex=unHex+tabHex[unEntier-1] ? Ca fonctionne pour ce cas mais pas pour les autres ^^
Merci d'avance !
Message édité par smxme le 11-04-2015 à 16:37:15
---------------
| i7 14700K | MSI Z790 Tomahawk WIFI | 2*32Go Corsair Vengeance 6000C30 | MSI 4090 GAMING X TRIO | DeepCool LT720 | NZXT H7 FLOW |