Bonjour !
Je suis étudiant, je poste ce problème auquel je perd patience car je ne trouve aucune solution.
J'ai crée un programme (en C++ sur console, je suis sur visual studio) qui me permet d'afficher le/les poid(s) de chaque chiffre d'un nombre saisir par un utilisateur.
La 1 ère version de mon programme marche, j'ai donc rajouté une boucle pour permettre à l'utilisateur de décidé quand il veut arrêter de saisir un nombre (en saisissant un simple 0).
A ce niveau pas de soucis, aucune erreur sauf ... Ma boucle marche bien, mais quand l'utilisateur saisie une 2 ème valeur, celle-ci ce rajoute à la 1 ère (ex: si l'user avait saisie 1023, et qu'il veuille saisir une autre valeur [admettons 101], cela m'affichera 1023101).
Solution 1 : j'ai essayé d'initialisé mon tableau à 0 à chaque fin de boucle pour éviter d'afficher les précédentes valeurs saisies par l'user.
Problème : des 0 s'affichent en plus de la nouvelle valeur (alors qu'a la 1 ère saisie ils ne s'affichent pas).
Je cherche donc un moyen d'effacer complètement les valeurs de mon tableau (oui je sais, même si cela n'est pas possible mais vous voyez ou je veux en venir), ou de pouvoir ne pas afficher les 0 (en laissant tout de même la condition de sorti du programme qui est obligatoire).
En résumé : Serait possible de ne pas afficher les 0 (ou l’ancienne valeurs que l'user à saisie) dans mon programme ? Je vous remercie d'avance.
info 1 : la sorti du programme en saisissant 0 est obligatoire, ainsi que le type "unsigned long int" pour la/les valeur(s) saisie(s).
info 2 : afficher le poids d'un nombre --> Le poids représente la position du chiffre dans le nombre en partant de la droite (le premier
chiffre de droite est à la position 0, il a donc un poids 0).
Exemple concret : l'user saisie 10023, le programme doit afficher ceci :
Saisir un nombre : 10023
3 : 0 // Peut ce traduire " le poids de 3 et 0" ou encore "3 a pour poids 0"
2 : 1
0 : 2 3
1 : 4
10023
Saisir un nombre :
Mon code :
Une image explicite :
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 #include "stdafx.h" #include <iostream> #include <algorithm> // ne sert finalement à rien si il faut ... using namespace std; #define TAILLE 8 // La taille du tableau est protéger par une constante est modifiable à tout moment unsigned long int saisie_valeur(unsigned long int &valeur) { cout << "Entrez un nombre (9 chiffres maximum) : "; cin >> valeur; return valeur; } unsigned long int calcul_poids(unsigned long int tableau[TAILLE], unsigned long int valeur, unsigned long int &taille_valeur) { while (valeur > 0) { tableau[taille_valeur] = valeur % 10; valeur /= 10; ++taille_valeur; } return taille_valeur; } void affichage_poids(unsigned long int tableau[TAILLE], unsigned long int taille_valeur) { for(unsigned long int i = 0; i < taille_valeur; ++i) { cout << tableau[i] << " : " << i << endl; } // Affichage de la valeur saisie par l'utilisateur for(int i = taille_valeur - 1; i >= 0; --i) // décrémentation pour afficher la valeur de départ (parcours le tableau à l'envers) { cout << tableau[i]; } cout << endl; } int main() { unsigned long int tableau[TAILLE] = { 0 }; // le type "unsigned long int" est obligatoire (la consigne le dit) unsigned long int valeur(0), taille_valeur(0); // Saisie de la valeur par l'Utilisateur saisie_valeur(valeur); while (valeur != 0) { // calcul du poid des chiffres calcul_poids(tableau, valeur, taille_valeur); // Affichage des chiffres avec leurs poids respectif affichage_poids(tableau, taille_valeur); // Supprimer les données du tableau ... pas encore trouver de solution ... saisie_valeur(valeur); } cout << "... Fermeture du programme ..." << endl; system("PAUSE"); return 0; }
![]()
Partager