[C++] Convertisseur Héxa/Déci

Fermé
saddog68 - Modifié par saddog68 le 23/05/2012 à 03:43
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 4 juin 2012 à 09:48
Bonjour,

Je suis actuellement entrain de tenter de créer un convertisseur Hexadécimal --> Décimal et inverse.
J'ai repris un ancien modèle que j'avais fait qui permettait de convertir du Décimal en Binaire et inverse également car je sais que le principe est quasiment le même.

Cependant je bloque avec les caratère A,B,C,D,E,F de l'héxadécimal que je n'arrive pas à convertir.

Pouvez-vous me donner un petit coup de pouce ?

Voici mon programme tel qu'il est en ce moment:



#include <iostream>
#include <math.h>
#include <string>
#include <sstream>

using namespace std;

int main()
{
char choix ;
string hexadecimal ;
int nb ;




choix = 'Z' ;
while (choix != 'Q' && choix != 'q')
{


cout << endl << "conversion decimal vers hexadecimal ........ 1" ;
cout << endl << "conversion hexadecimal vers decimal ........ 2" ;
cout << endl << "quitter .................................... Q" ;
cout << endl << "votre choix ................................ " ;
cin >> choix ;


if (choix == '1')
{
hexadecimal = "" ;
cout << "entrer un nombre decimal = " ;
cin >> nb ;
while (nb != 0);
{
char c = (nb%16) + '0' ;
hexadecimal = c + hexadecimal ;
nb = nb / 16 ;
}
cout << "conversion en hexadecimal " + hexadecimal ;
}
else
{
if (choix == '2')
{
nb = 0 ;
int k = 0 ;
double b = 16;
cout << "entrer un nombre hexadecimal = " ;
cin >> hexadecimal ;
while (hexadecimal.size() > 0)
{
string s = hexadecimal.substr(hexadecimal.size()-1, 1) ;
istringstream myStream(s);
int result ;
myStream>>result ;
nb += result * pow(b, k) ;
hexadecimal = hexadecimal.substr(0, hexadecimal.size()-1) ;
k++ ;

}

cout << "conversion en base 10 = " << nb ;
}

}
}
}



Merci d'avance !

PS: Je tiens à m'excuser si le sujet à déjà été traiter sur un autre post. J'ai un peu regarder mais je n'ai pas trouver.
A voir également:

4 réponses

Pas de réponse ??
0
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
25 mai 2012 à 08:39
à mon avis, tu peux essayer en lui disant qu'il faut qu'il lise en hexadecimal, grâce une option type "flag" :
https://en.cppreference.com/w/cpp/io/ios_base/fmtflags
Et là il devrait convertir le a en valeur 10.
0
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
25 mai 2012 à 08:40
0
Bonsoir,

Merci pour ta réponse Char Snipeur, je vais essayer de voir avec ce que tu m'as dis.

Cependant, n'existe t il pas un moyen de déclarer ces variables en tant qu'entier, puis les convertir en chaine avec seulement les #include que j'ai déjà mis ? Sans passer par le typdef ou le #include <iomanip> que je n'ai pas encore appris.
à savoir:
#include <iostream>
#include <math.h>
#include <string>
#include <sstream>

Merci d'avance
0
Toujours pas de réponse ?

Pourtant je pense pas que ça soit si difficile non ?
0
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
4 juin 2012 à 09:48
utilises ce que je t'ai donnée, c'est simple. Je ne suis même pas sur qu'il y ait besoin d'inclure le iomanip.
0