Un programme de conversion des bases

Fermé
byblosco Messages postés 13 Date d'inscription jeudi 8 avril 2010 Statut Membre Dernière intervention 3 octobre 2014 - Modifié par byblosco le 2/10/2014 à 21:48
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 3 oct. 2014 à 07:45
Bonjour,
s'il vous plait j'ai un problème j'ai un programme c++ a faire il est facile de point de vue concept si on a le droit d'utiliser le tableau mais ici le problème de cet exercice ,le but c'est de ne pas utiliser les tableau alors on se trouve dans un problème comme suit :


Ecrire un programme C++ qui :

1) demande à l'utilisateur de saisir un nombre entier n en base 10 (0 ? n ? 1'000'000)
2) demande à l'utilisateur de choisir la base b (2 ? b ? 9) dans laquelle il souhaite convertir n
3) effectue la conversion souhaitée
4) affiche à l'écran le résultat de la conversion sous la forme : (n)10 = (m)b Exemple : (7)10(111)2
5) et se termine
6) autorisation du boucle while sans utiliser les conditions et les tableau

le probleme ici c'est comment faire pour inverser le resultat depuis en bas jusqu''a en haut sans utiliser des tableaux
A voir également:

1 réponse

byblosco Messages postés 13 Date d'inscription jeudi 8 avril 2010 Statut Membre Dernière intervention 3 octobre 2014
2 oct. 2014 à 21:48
voila mon code source mais les valeurs sont a l'envers.

#include <iostream>
#include <cstdlib>

using namespace std;

int main() {

unsigned short n;
unsigned short b;
unsigned short reste;



cout << " veuillez saisir le nombre que vous souhaiter convertir : ";
cin >> n;
cout << " veuillez saisir la base : ";
cin >> b;

cout << "("<<n<<")10 = " ;
cout << "(";
while (n/b!=0) {

reste = n % b;
cout << reste;
n = n / b;
};
cout << n % b;
cout << ")"<<b;
cout << endl;




system("Pause");
return EXIT_SUCCESS;
}
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
2 oct. 2014 à 22:26
while (n/b!=0) {

reste = n % b;
cout << reste;
n = n / b;
};

Pas besoin de ';' après le while() {}.

Sinon pour inverser, il suffit de jouer avec les modulo 10 et division par 10 pour récupérer le dernier chiffre.
Par exemple :
N=12345
N%10=5. Je stocke 5 dans la variable resultat
Je stocke N/10 (1234) dans N.
N%10=4. Je fais resultat = resultat*10+4 = 54.
Je stocke N/10 (123) dans N.
N%10=3. Je fais resultat = resultat*10+3=543
Etc.

Voiloù.
Je te laisse le codage à titre d'exercice.
Note : merci d'utiliser les balises code cpp lorsque tu postes ton code.
Exemple :
<"code cpp">ici tu mets ton code<"/code"> (à mettre sans guillemets).
Note 2 : ici tu es sur le salon C. Vu que tu parles de C++, il faut le mettre dans la rubrique C++ ;-). Je redirige dans la bonne section.
0
byblosco Messages postés 13 Date d'inscription jeudi 8 avril 2010 Statut Membre Dernière intervention 3 octobre 2014
2 oct. 2014 à 22:40
oui exactementt je sis tres bien cette methode ici le probleme c'est comment prendre le resultat vu que j'ai mi que cout j les pas stocké dans des variables.
0
byblosco Messages postés 13 Date d'inscription jeudi 8 avril 2010 Statut Membre Dernière intervention 3 octobre 2014
2 oct. 2014 à 22:41
il me faut justement le resultat pour pouvoir utiliser la methode de modulo
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
2 oct. 2014 à 22:44
Bah si tu connais cette méthode, tu fais l'inverse...
Au lieu d'afficher le résultat au fur et à mesure, tu stockes ceci dans une variable temporaire et tu multiplies par 10 puis additionne.
Ainsi tu auras la valeur à inverser dans une variable.
0
byblosco Messages postés 13 Date d'inscription jeudi 8 avril 2010 Statut Membre Dernière intervention 3 octobre 2014
2 oct. 2014 à 22:50
stp j'ai pas bien compris tu peux me donner un exemple comment le stocker dans une variable si ca te derange pas
0