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

Ruby Discussion :

Afficher le résultat de plusieurs méthodes sur une ligne


Sujet :

Ruby

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 3
    Points : 2
    Points
    2
    Par défaut Afficher le résultat de plusieurs méthodes sur une ligne
    Bonjour à tous,

    Je me suis trés récemment essayé à la programmation avec ruby en achetant un bouquin dans le genre 'ruby pour les nuls'.
    Dans ce livre on me demande de faire un petit programme permettant de convertir un nombre en chiffre romains. j'ai fait quelque chose qui à l'air de fonctionner mais je n'arrive pas à afficher la totalité de la réponse sur une seule ligne:
    Voici ce que ça donne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    julien@julien-laptop:~/Programmes Rubby$ ruby chif2*
    Ce programme vous permet de convertir un nombre en chiffres romains nouvelle version
    veuillez entrer un nombre entre 1 et 4999
    1699
    M
    D
    C
    L
    XL
    V
    IV
     
    julien@julien-laptop:~/Programmes Rubby$
    Ma question est comment assemblé les carractères romains, qui sont définis par des méthodes, sur une seule ligne.

    Je précise encore que je n'ai aucune expérience de programmation, ma question est sans doute trés bête et la question toute simple.

    Si quelqu'un pouvais m'éclairer merci

    Voici le code du programme:
    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
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
     
    puts 'Ce programme vous permet de convertir un nombre en chiffres romains nouvelle version'
    puts 'veuillez entrer un nombre entre 1 et 4999'
     
    nombre = gets.chomp
     
    # vérification des mutilples de 1000
    x1000 = nombre.to_i / 1000
     
    def aff_1000 nbre_1000
    puts 'M' * nbre_1000
    end
    nbrm = x1000.to_i
     
    nombre = (nombre.to_i - (1000 * x1000.to_i))
     
    # vérification des mutilples de 500
    x500 = nombre.to_i / 500
     
    def aff_500 nbre_500
    puts 'D' * nbre_500
    end
    nbrd = x500.to_i
     
    nombre = (nombre.to_i - (500 * x500.to_i))
     
    # vérification des mutilples de 100
    x100 = nombre.to_i / 100
     
    if x100 == 4
    	def aff_100 nbre_100
    	puts 'CD'
    	end
    	nbrc = 1
     
    else
    	def aff_100 nbre_100
    	puts 'C' * nbre_100
    	end
    	nbrc = x100.to_i
     
    end
     
    nombre = (nombre.to_i - (100 * x100.to_i))
     
    # vérification des mutilples de 50
    x50 = nombre.to_i / 50
     
    def aff_50 nbre_50
    puts 'L' * nbre_50
    end
    nbrl = x50.to_i
     
    nombre = (nombre.to_i - (50 * x50.to_i))
     
    # vérification des mutilples de 10
    x10 = nombre.to_i / 10
     
    if x10 == 4
    	def aff_10 nbre_10
    	puts 'XL'
    	end
    	nbrx = 1
     
    else
    	def aff_10 nbre_10
    	puts 'X' * nbre_10
    	end
    	nbrx = x10.to_i
     
    end
     
    nombre = (nombre.to_i - (10 * x10.to_i))
     
    # vérification des mutilples de 5
    x5 = nombre.to_i / 5
     
    def aff_5 nbre_5
    puts 'V' * nbre_5
    end
    nbrv = x5.to_i
     
    nombre = (nombre.to_i - (5 * x5.to_i))
     
    # vérification des unités restantes
    x1 = nombre.to_i
     
    if x1 == 4
    	def aff_1 nbre_unite
    	puts 'IV'
    	end
    	nbri = 1
     
    else
    	def aff_1 nbre_unite
    	puts 'I' * nbre_unite
    	end
    	nbri = x1.to_i
     
    end
     
    # affichage du résultat
    puts (aff_1000 nbrm).to_s + (aff_500 nbrd).to_s + (aff_100 nbrc).to_s + (aff_50 nbrl).to_s + (aff_10 nbrx).to_s + (aff_5 nbrv).to_s + (aff_1 nbri).to_s

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 764
    Points : 909
    Points
    909
    Par défaut
    Tout d'abord, ta question aurait bien entendu sa place sur le forum consacré à Ruby.


    Ensuite, je ne connais absolument pas Ruby, mais en réfléchissant un peu...
    Dans tes fonctions, tu utilise "puts blabla" et ce que tu obtiens c'est l'affichage de "blabla" avec un saut de ligne à chaque fois que tu réutilise la fonction puts. Conclusion : la fonction puts insère des sauts de ligne, il faut changer de fonction d'affichage afin de ne plus avoir cet effet de bord gênant.

    En tapant "Ruby puts" dans mon moteur de recherche préféré le premier résultat est une page qui me dit ceci :
    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
    Variety in output - p, print and puts
    
    # print is 'low level', puts
    # puts adds a \n if needed
    # p dumps a variable - so quotes it
    
    print "Hello Melksham\n"
    puts "Hello Trowbridge"
    puts "Hello Chippenham\n"
    p "Hello Wiltshire\n"
    
    town = "Salisbury"
    
    # Use of #{....} for a variable name in double quotes
    
    print "Shall we go to #{town} tomorrow?\n"
    Ce qui confirme que puts ajoute un saut de ligne, j'avais raison
    Donc, solution facile et immédiate sans avoir à modifier (fondamentalement) ton code : utilise print à la place de puts et tu devrais obtenir l'affichage de tous tes chiffres romains sur la même ligne... par contre pense à rajouter toi-même des sauts de ligne (ou à conserver puts) si tu en as effectivement besoin à certains endroits (par exemple pour l'affichage des deux premières lignes explicatives).

    is your friend !

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Merci Astartee pour ta réponse.

    Désolé pour avoir poster au mauvais endroit mais il semble maintenant que mon post ai été déplacé dans la bonne section.

    Je ne connaissais pas la fonction print (le livre que j'utilise est trés sommaire)
    Je vais fouiller et voir si cela résoud mon problème.

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Effectivement, la fonction print fonctionne comme Astartee me l'a décrite.
    J'ai donc pu résoudre mon problème.

    Merci encore

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

Discussions similaires

  1. Résultat de plusieurs semaines sur une seule requête
    Par chart dans le forum Requêtes
    Réponses: 9
    Dernier message: 29/07/2014, 17h35
  2. Afficher les données d'un champ sur une ligne
    Par white-angel dans le forum Access
    Réponses: 6
    Dernier message: 30/08/2006, 11h09
  3. [xDSL]Support de plusieurs xDSL sur une ligne analogique
    Par leminipouce dans le forum Dépannage et Assistance
    Réponses: 3
    Dernier message: 03/04/2006, 17h52
  4. plusieurs div sur une ligne
    Par difficiledetrouver1pseudo dans le forum Balisage (X)HTML et validation W3C
    Réponses: 14
    Dernier message: 18/02/2006, 23h57
  5. Mettre plusieurs enrégistrement sur une ligne
    Par royrremi dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 20/01/2006, 07h41

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