Bonjour à la communauté developpez
Alors voilà, j'essaie de faire un exercice mais je me retrouve bloqué. Le but étant à partir d'un vecteur et de mes connaissances de base en c++ plutôt médiocre, de faire un programme qui puisse convertir comme un grand un chiffre en base 10 vers une base 16 et l'inverse.
Dans un premier temps, j'ai essayé de produire quelque chose sous la forme d'un algorithme:


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
Programme conversionBase1016
  //déclaration des variables du programme
  vecteur[10..15]: caractere
  choix: caractere
  calcule, poids, resultat, k, nb: entier
Debut
   ////on donne au vecteur les valeurs de la base 16 entre 10 et 15
  vecteur<-{"A","B","C","D","E","F"}
  choix<-"c"
  tantque choix <> "Q" et choix <> "q"
    //affichage du menu
    afficher "Conversion base 10 en base 16 (1)"
    afficher "Conversion base 16 en base 10 (2)"
    afficher "Quitter le programme (Q)"
 
    //conversion base 10 en base 16
    si choix = 1 alors
      resultat<-""
      afficher "Renter un nombre entier de base 10"
      saisir nb
      tanque nb <> 0 alors
        resultat<-gauche(str(nb mod 16)+resultat
        nb<-nb div 16
        pour k de 10 à 15
          si resultat = k alors
            resultat<-vecteur[k]
          finsi
        finpour
      fintantque
      afficher "Le nombre en base 16:"+resultat+
      sinon
        si choix = 2 alors
          calcule<-0
          afficher "Rentrer un nombre de base 16:"
          saisir nb
          taille<-taille(nb)
          //tantque nb contient toujours quelque chose
          tantque taille(nb)>0
            poids<-pow (16, taille-1)
            //exemple: si 'A' alors k=10; si 'B' alors k=11
            pour k de 10 à 15
              si extraire(nb,1,1)=vecteur[k] alors
                calcules<-poids*k
              sinon
                //Comme on ne se sert pas de k ici, on utilise val
                calcule<-poids*val(extraire(nb,1,1)
              finsi
            finpour
          fintanque
          afficher"Le nombre en base 10:"+calcule
        finsi
fin
En c++, j'ai quelque chose avec beaucoup d'erreurs et des problèmes aussi pour traduire/passer d'un algorithme à du c++.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
/*programme exo1
 * but: convertir base 10 et 16
 * auteur: Mario
 * Date 24/03/2015
*/
 
//Bibliothèques nécessaires au programme
#include <conio.h> //pour utiliser le 'getch'
#include <stdio.h> //permet d'utiliser 'printf' et 'scanf'
#include <math.h> //permet d'utiliser dans notre cas la fonction mathématique 'pow'
 
using namespace std;
 
int main()
{
	//déclaration des variables du programme
	//on choisis l'interval 10 et 15 par rapport à 'A' étant égale à 10 et 'F' à 15
	//on donne au vecteur les valeurs de la base 16 entre 10 et 15
	string vecteur[10.15] = {"A","B","C","D","E","F"};
 
	char choix;
	int calcule, poids, resultat, k, nb, taille;
 
 
 
 
 
	//on choisit une valeur quelconque qui n'est pas '1','2', ou 'Q'/'q' pour demarrer le programme
	choix = "c";
 
 
	while (choix != "Q" & choix != "q"){
		//affichage du menu du programme
		printf("Conversion base 10 en base 16(1):");
		printf("Conversion base 16 en base 10(2):");
		printf("Quitter le programme (Q):");
 
		//si 1 alors conversion base 10 en base 16
		if(choix = 1){
	          resultat =  ;
	          printf("Rentrer un nombre entier de base 10:");
	          scanf("%d", &nb);
 
	          while(nb != 0){
	             resultat = nb.substr(nb % 16)+resultat;
	             nb = (nb/16);
	             for(k=10 ; k<=15 ; k++){
	        	  if (resultat == k){
	        		 resultat = vecteur[k];
	        	  }
	           }
	      }
	      printf("Le nombre en base 16: %d ", &resultat);
 
	      }else{
		      if(choix = 2){
			calcule = 0;
			printf("Rentrer un nombre base 16:");
			scanf("%d", &nb);
 
			//tantque nb contient toujours quelque chose
			taille = nb.size();
			while (nb.size() > 0){
			      poids = pow(16, taille-1);
		              for(k=10; k<=15; k++){
 
			      //exemple: si 'A' alors k=10. Si 'F' alors k=15
		              if(extracte(nb,1,1)==vecteur[k]){
			        calcule=poids*k;
				  }else{
				          //comme on ne se sert pas de k ici, on utilise la fonction Val
					  calcule=poids*Val(extract(nb,1,1));
 
					 }
				 }
			   }
			   printf("Le nombre en base 10: %d ", &calcule);
			}
 
 
		}
    getch();
    return 0;
	}
 
}
Je suis conscient que ma logique est soit fausse ou très peu optimisée. Qu'il y a des erreurs (même trop) mais je suis ici pour avoir des conseilles et je suis pas la partie débutant . Bonne journée