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:
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 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
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
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; } }
Partager