Convertisseur nombre arabe => nombre romain (1 à 4999)

Soyez le premier à donner votre avis sur cette source.

Vue 7 109 fois - Téléchargée 254 fois

Description

Convertisseur de nombre arabe en nombre romain (de 1 à 4999).

Aucune bibliothèque mathématique utilisée.

Source / Exemple :


// POUR TOUTE REMARQUE: *********@orange.fr

#include <iostream>
using namespace std;

void main(void)
{
	bool FinProg = false;
	int Nombre;
	int Millier;
	int Centaine;
	int Dizaine;
	int i;
	
	do										// Repeter le programme tant que la saisie est differente de 0
	{
		do									// Repeter la saisie tant qu'elle est incorrecte
		{
			cout << "Veuillez saisir un nombre \205 convertir compris entre 1 et 4999 (0 pour sortir): \n";
			cin >> Nombre;
		}while(!((Nombre <= 4999) && (Nombre >= 0)));

		if (Nombre == 0)					// Si la saisie est 0, on met fin au programme
		{
			FinProg = true;
		}

		else								// Sinon on execute la convertion
		{
			cout << "\n" << Nombre << " => ";

			Millier = Nombre / 1000;		// On decompose le nombre en millier, centaine et dizaine
			Nombre = Nombre % 1000;
			Centaine = Nombre / 100;
			Nombre = Nombre % 100;
			Dizaine = Nombre / 10;
			Nombre = Nombre % 10;

			/********************************************

  • MILLIERS *
                                                                                        • /
for (i = 0 ; i < Millier ; i++) // On affiche les milliers { cout << "M"; } /********************************************
  • CENTAINES *
                                                                                        • /
if (Centaine == 9) // On affiche les centaines { cout << "CM"; Centaine = Centaine - 9; } if ((Centaine >= 5) && (Centaine <= 8)) { cout << "D"; Centaine = Centaine - 5; } if (Centaine == 4) { cout << "CD"; Centaine = Centaine - 4; } if ((Centaine >= 1) && (Centaine <= 3)) { for (i = 0 ; i < Centaine ; i++) { cout << "C"; } } /********************************************
  • DIZAINES *
                                                                                        • /
if (Dizaine == 9) // On affiche les dizaines { cout << "XC"; Dizaine = Dizaine - 9; } if ((Dizaine >= 5) && (Dizaine <= 8)) { cout << "L"; Dizaine = Dizaine - 5; } if (Dizaine == 4) { cout << "XL"; Dizaine = Dizaine - 4; } if ((Dizaine >= 1) && (Dizaine <= 3)) { for (i = 0 ; i < Dizaine ; i++) { cout << "X"; } } /********************************************
  • UNITEES *
                                                                                        • /
if (Nombre == 9) // On affiche les unitées { cout << "IX"; Nombre = Nombre - 9; } if ((Nombre >= 5) && (Nombre <= 8)) { cout << "V"; Nombre = Nombre - 5; } if (Nombre == 4) { cout << "IV"; Nombre = Nombre - 4; } if ((Nombre >= 1) && (Nombre <= 3)) { for (i = 0 ; i < Nombre ; i++) { cout << "I"; } } cout << "\n\n"; } }while(!(FinProg == true)); // Fin du programme si la valeur saisie est 0 }

Codes Sources

A voir également

Ajouter un commentaire

Commentaire

Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
26
Salut,

Tu devrais essayé de factoriser plus ton programme

Comme le systeme est valable pour les dizaines centaines milliers ....

Tu devrais passer par une fonction et tu passe les lettres concernées en paramètres d'une fonction,

genre : traductionRomain(codageUniteSuperieur,codage5,codageUnite)

exemple pour les centaines
traductionRomaine('M','D','C')
pour les dizaines
traductionRomaine('C','L','X')

à toi de coder le corps.

Bon dev
la fonction inverse serait bien aussi.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.