cout << endl << "conversion entier vers hexadecimal ........ 1" ; cout << endl << "conversion hexadecimal vers entier ........ 2" ; cout << endl << "quitter ............................... Q" ; cout << endl << "votre choix ........................... " ; cin >> choix ;
std::cout << std::endl << "conversion entier vers hexadecimal ........ 1" << std::endl << "conversion hexadecimal vers entier ........ 2" << std::endl << "quitter ............................... Q" << std::endl << "votre choix ........................... " << std::endl std::cin >> choix;
Je suis vraiment au tous début je pense que tous le monde est déjà passé par la.. :)
#include #include <string> #include <sstream> #include <cmath> static const char v[6] = {'a', 'b', 'c', 'd', 'e', 'f'}; char menu() { char choix = 'A'; while (choix != 'Q' && choix != 'q' && choix != '1' && choix != '2') { std::cout << std::endl << "conversion entier vers hexadecimal ........ 1" << std::endl << "conversion hexadecimal vers entier ........ 2" << std::endl << "quitter ............................... Q" << std::endl << "votre choix ........................... "; std::cin >> choix ; } return choix; } std::string toHexa(int nb) { std::string hexa; int res = 0; char h; while (nb != 0) { // récupération du reste et conversion en caractère res = nb % 16; // test du reste si celui est superieur a 10 if (res > 9) { // soustraction de 10 du nombre superieur a 10 res = res - 10; // boucle pour la recherche de la lettre associé au nombre en hexa for (int i = 0 ; i < 6; ++i) { if (res == i) { // Le nombre etant trouvé association de la lettre et incrementation dans la variable h h = v[i] ; } } } else { // si le reste n'est pas superieure a 10 alors h est incrementé de la valeur converti de res h = res; } // on ajoute le caractère a la chaine hexa hexa = h + hexa ; // on divise nb par 16 nb = nb / 16; } return hexa; } int toDec(std::string hexa) { int nb = 0; int k = 0 ; // boucle sur ma taille de hexa while (!hexa.empty()) { // extration du dernier caractère de hexa std::string s = hexa.substr(hexa.size()-1, 1) ; char t = s[0]; int val = 0; // comparatif de t si celui ci est une lettre en hexa if ((t 'a') || (t 'b') || (t =='c') || (t =='d') || (t =='e') || (t =='f')) { for (int i = v[0]; i <= v[5]; ++i) { if (t == v[i]) { val = i + 10; } } } // conversion du caractère en entier si celui si n'est pas une lettre en hexa t = t >> val; // ajout dans nb du bit récupéré multiplié par la puissance de 16 nb += val * pow(16, k); // on enlève le dernier caractère hexa = hexa.substr(0, hexa.size() - 1); k++; } return nb; } int main() { bool stop = false; while (!stop) { switch (menu()) { case 'q': case 'Q': stop = true; break; case '1': { int nb = 0; std::cout << "Saisir un nombre entier = " ; std::cin >> nb; std::cout << "Conversion en hexadecimal = " << toHexa(nb) << std::endl; break; } case '2': { std::string hexa; std::cout << "Entrez un nombre hexadecimal (sans majuscules) = "; std::cin >> hexa; std::cout << "Conversion en decimale = " << toDec(hexa) << std::endl; break; } } } return 0; }
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question#include <stdio.h> #include <stdlib.h> #include #include <string> #include <sstream> #include <cmath> using namespace std; int main() { char choix ; string hexa ; int nb ; int val ; int res ; char v[6] = {'a', 'b', 'c', 'd', 'e', 'f'}; int i ; // boucle sur le menu choix = 'A' ; while (choix != 'Q' && choix != 'q') { // afficher le menu cout << endl << "conversion entier vers hexadecimal ........ 1" ; cout << endl << "conversion hexadecimal vers entier ........ 2" ; cout << endl << "quitter ............................... Q" ; cout << endl << "votre choix ........................... " ; cin >> choix ; // conversion entier vers hexa if (choix == '1') { hexa = ' ' ; cout << "saisir un nombre entier = " ; cin >> nb ; while (nb != 0) { char h ; // récupération du reste et conversion en caractère res = 0 ; res = (nb%16) ; // test du reste si celui est superieure a 10 if (res > 9) { // soustration de 10 du nombre superieure a 10 res = res - 10 ; // boucle pour la recherche de la lettre associé au nombre en hexa for (i = 0 ; i <= 6 ; i++ ){ if (res == i) { // le nombre etant trouver association de la lettre et incrementation dans la variable h h = v[i] ; } } }else{ // si le reste n'est pas superieure a 10 alors h est incrementé de la valeur converti de res h = res; } // on ajoute le caractère a la chaine hexa hexa = h + hexa ; // on divise nb par 16 nb = (nb/16) ; } cout << "conversion en hexadecimal = " + hexa ; } else { // conversion hexa vers entier if (choix == '2') { nb = 0 ; int k = 0 ; cout << "entrer un nombre hexadecimal (sans majuscules) = " ; cin >> hexa ; // boucle sur ma taille de hexa while (hexa.size() > 0) { // extration du dernier caractère de hexa string s = hexa.substr(hexa.size()-1, 1) ; char t = s[0]; int val ; val = 0 ; // comparatif de t si celui ci est une lettre en hexa if ( (t 'a') || (t 'b') || (t =='c') || (t =='d') || (t =='e') || (t =='f') ) { for ( i = v[0] ; i <= v[5] ; i++) { if (t == v[i]) { val = i + 10 ; } } } // conversion du caractère en entier si celui si n'est pas une lettre en hexa t>>val ; // ajout dans nb du bit récupéré multiplié par la puissance de 16 nb += val * pow(16, k) ; // on enlève le dernier caractère hexa = hexa.substr(0, hexa.size()-1) ; k++ ; } cout << "conversion en decimale = " << nb ; } } } return 0; }