IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Pascal Discussion :

Conversion de nombres en chiffres romains


Sujet :

Pascal

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Novembre 2008
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 10
    Par défaut Conversion de nombres en chiffres romains
    Bonjour,

    écrire un programme qui lis une annee ecrite en chiffres arabes, entre le rang de 1 a 2000, et le rendre en numéros romains (I=1, V=5, X=10, L=50,
    C=100, D=500,
    M=1000).

    entrées

    introduire année (de 1 a 2100) => 2008
    introduire année (de 1 a 2100) => 1966
    introduire année (de 1 a 2100) => 2200

    Sorties

    l année 2008 en numéros romains est : MMVIII
    l'année 1966 en numéros romains est : MCMLXVI
    l année 2200 dehors de rang

  2. #2
    Membre chevronné

    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    19 647
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 19 647
    Par défaut
    Bonjour,

    tu as déjà avancé un peu ton code ?
    tu as quelque chose à nous montrer ?
    quel est exactement ton problème ?

  3. #3
    Membre averti
    Inscrit en
    Novembre 2008
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 10
    Par défaut
    en fait, je ne suis un peu perdu, et je ne sais ou je commencerai, mais l'idée est : utiliser des opérations mathématiques (des divisions).... par exemple pour savoir s'il faut ajouter un "M" le nombre romain, il faut diviser l'année ajoutée par clavier PAR 1000, et voir le résultat, Si on entre 2008, le resultat est 2 donc le début d nombre romain est MM, puis on pass à D=500 ...
    .

  4. #4
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 977
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 977
    Par défaut
    Koe,

    Ton programme doit suivre le même algorithme que toi quand tu fais cette conversion à la main.

    Donc, tu écris ça au net, en affinant suffisamment pour traiter tous les cas, et il ne te reste plus qu'à traduire en Pascal. yapuka

  5. #5
    Membre émérite
    Avatar de CapJack
    Homme Profil pro
    Prof, développeur amateur vaguement éclairé...
    Inscrit en
    Mars 2004
    Messages
    624
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Prof, développeur amateur vaguement éclairé...
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 624
    Par défaut
    Citation Envoyé par Manila2 Voir le message
    en fait, je ne suis un peu perdu, et je ne sais ou je commencerai, mais l'idée est : utiliser des opérations mathématiques (des divisions).... par exemple pour savoir s'il faut ajouter un "M" le nombre romain, il faut diviser l'année ajoutée par clavier PAR 1000, et voir le résultat, Si on entre 2008, le resultat est 2 donc le début d nombre romain est MM, puis on pass à D=500 ...
    .
    Et pour 1900 ? 40 ? 9 ?

    Je crains que ton algorithme ne soit trop simple, mais peut-être est-ce déjà un bon angle d'approche.

  6. #6
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2008
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2008
    Messages : 14
    Par défaut
    J'ai du faire un truc similaire il y a quelques semaines pour un cours d'algorithme.

    Si ça t'interesse, voilà mon programme, ainsi que son énnoncé. Tu arriveras surement à l'améliorer et à le modifié en fonction de se que tu veux faire.

    Ennoncé :
    "Soit a un nombre entier positif. On demande de concevoir un algorithme qui imprime la représentation de ce nombre en chiffres romains.
    Exemple : 317 --> CCCXVII

    On ne tiendra pas compte des conventions que l'on utilise habituellement pour représenter les nombres suivants:

    Pour écrire : 4 9 40 90 et ainsi de suite
    on utilisera : IIII VIIII XXXX LXXXX
    au lieu de : IV IX XL XC

    Le programme imprimera le nombre en chiffres arabes et en chiffres romains. Il pourra éventuellement appliquer répétitivement cette conversion à plusieurs nombres."
    Voici mon code :

    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
    program chiffre_romain;
     
    uses crt;
     
    var
       somme    : integer;
       romain   : array [0..6] of char;
       arabe    : array [0..6] of integer;
       temp_sum : integer;
       i	    : integer;
       a	    : integer;
       g	    : integer;
     
     
    begin
     
       writeln('Entrer un nombre compris entre 0 et 3000 en chiffre arabe : ');
       readln(somme);
     
       clrscr;
     
       romain[0] := 'I'; romain[1] := 'V'; romain[2] := 'X';
       romain[3] := 'L'; romain[4] := 'C'; romain[5] := 'D';
       romain[6] := 'M';
     
       arabe[0] := 1; arabe[1] := 5; arabe[2] := 10; arabe[3] := 50;
       arabe[4] := 100; arabe[5] := 500; arabe[6] := 1000;
     
       i := 6; a := 0;
     
       temp_sum := somme;
     
       write(somme, ' = ');
     
       while (temp_sum > 0) do
       begin
          if (temp_sum div arabe[i] >= 1) then
          begin
     
    	 a := temp_sum div arabe[i];
    	 g := 0;
     
    	 while (g < a) do
    	 begin
    	    write(romain[i]);
    	    g := g+1;
    	 end;
     
          end;
     
          temp_sum := temp_sum mod arabe[i];
          i:= i - 1;
     
       end;
     
       readln();
       clrscr;
     
    end.

  7. #7
    Membre émérite
    Avatar de CapJack
    Homme Profil pro
    Prof, développeur amateur vaguement éclairé...
    Inscrit en
    Mars 2004
    Messages
    624
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Prof, développeur amateur vaguement éclairé...
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 624
    Par défaut
    Ce n'est pas un bon service à rendre à quelqu'un, que de lui fournir une solution toute mâchée !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Turbo Pascal] Conversion en chiffres romains
    Par lediamant dans le forum Turbo Pascal
    Réponses: 19
    Dernier message: 24/12/2012, 15h29
  2. Conversion d'un nombre nb arabe en chiffres romains
    Par zebrac dans le forum Général Python
    Réponses: 7
    Dernier message: 22/11/2012, 19h55
  3. [JavaScript] Conversion de chiffres arabes en chiffres romains et inversement
    Par danielhagnoul dans le forum Contribuez
    Réponses: 1
    Dernier message: 05/11/2012, 08h48
  4. [Débutant] Ecrire un nombre en chiffres romains !
    Par kriskikout dans le forum Ada
    Réponses: 2
    Dernier message: 05/12/2006, 13h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo