Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 25/07/2008, à 20:28

Fallout_Xtreme

[Débutant] Problème de Script avec Ruby

Bonsoir à tous,

Je débute la programmation avec Ruby depuis trés peu de temps.
J'ai donc essayé de faire un Convertisseur €-->F / F-->€ pour m'entraîner mais là j'ai une seule erreur dans mon code source mais je n'arrive pas à comprendre d'où elle vient.

Voici donc mon code :

def euros
  puts "Quel montant voulez vous convertir en F ?"
  montant = gets
  resultat = $_*6.55957
  puts "#{montant} E = #{resultat} F"
end

def francs
  puts "Quel montant voulez vous convertir en E ?"
  montant2 = gets
  resultat2 = $_/6.55957
  puts "#{montant2} F = #{resultat2} E"
end

puts "Convertisseur E-->F / F-->E"
puts "Voulez-vous convertir des E-->F ou des F-->E ?"
puts "Tapez le chiffre correspondant à votre choix :"
puts "1. E-->F"
puts "2. F-->E"
choixUtilisateur = gets

if choixUtilisateur == 1
    puts euros
  else choixUtilisateur == 2
    puts francs
    end

Et lorsque je le compile, voici l'erreur que j'obtiens :
"Test.rb:11:in "francs" : undefined method "/" for "6\n":String <NoMethodError>

from Test.rb:25"

Voila, donc si quelqu'un pourrait me dire d'où vient l'erreur, je le remercie d'avance car là vraiment je vois pas.

Cordialement,
Fallout_Xtreme

Hors ligne

#2 Le 25/07/2008, à 20:44

jojo-lapin

Re : [Débutant] Problème de Script avec Ruby

Salut,

d'après moi ce n'est pas grand chose, c'est juste que gets renvoie une chaîne de caractère avec "\n" à la fin et qu'ensuite tu essaies d'appliquer une division à cette chaîne de caractère.

essaie

montant2=gets.chomp (supprime "\n")
montant2.to_i (transforme le(s) caractère(s) en entier.

#3 Le 25/07/2008, à 21:05

Fallout_Xtreme

Re : [Débutant] Problème de Script avec Ruby

J'ai essayé d'appliquer ce que tu m'as conseillé.

Maintenant mon code ressemble à ceci :

def euros
  puts "Quel montant voulez vous convertir en F ?"
  montant = gets.chomp
  montant.to_i
  resultat = montant * 6.55957
  print "#{montant} E = #{resultat} F"
end

def francs
  puts "Quel montant voulez vous convertir en E ?"
  montant2=gets.chomp
  montant2.to_i
  resultat2 = montant2 / 6.55957
  print "#{montant2} F = #{resultat2} E"
end

puts "Convertisseur E-->F / F-->E"
puts "Voulez-vous convertir des E-->F ou des F-->E ?"
puts "Tapez le chiffre correspondant à votre choix :"
puts "1. E-->F"
puts "2. F-->E"
choixUtilisateur = gets

if choixUtilisateur == 1
    puts euros
else 
    puts francs
end

Mais j'ai encore une erreur lors de la compilation. Seul le début du code fonctionne aprés le programme plante avec cette erreur qui est apparemment quasi-identique à celle de tout à l'heure.

"Test.rb:13:in "francs": undefined method "/" for "5":String <NoMethodError>
           from Test.rb:27

Je vais m'arracher les cheveux ^^.

Hors ligne

#4 Le 25/07/2008, à 21:22

jojo-lapin

Re : [Débutant] Problème de Script avec Ruby

C'est normal:
remplace

montant2=gets.chomp
montant2.to_i
resultat2 = montant2 / 6.55957

par

montant2=gets.chomp
resultat2 = montant2.to_i / 6.55957

#5 Le 25/07/2008, à 21:30

Fallout_Xtreme

Re : [Débutant] Problème de Script avec Ruby

Ah excuse moi ^^.

Bon j'ai essayé de procéder comme ça. Et là plus d'erreur de compilation mais toujours un problème qui persiste.

Lors du choix de la conversion €-->F ou F-->€, peu importe ce que je choisis, je retombe toujours sur une conversion F-->€.

Voici le code corrigé :

def euros
  puts "Quel montant voulez vous convertir en F ?"
  montant = gets.chomp
  resultat = montant.to_i * 6.56
  print "#{montant} E = #{resultat} F"
end

def francs
  puts "Quel montant voulez vous convertir en E ?"
  montant2=gets.chomp
  resultat2 = montant2.to_i / 6.56
  print "#{montant2} F = #{resultat2} E"
end

puts "Convertisseur E-->F / F-->E"
puts "Voulez-vous convertir des E-->F ou des F-->E ?"
puts "Tapez le chiffre correspondant à votre choix :"
puts "1. E-->F"
puts "2. F-->E"
choixUtilisateur = gets

if choixUtilisateur == 1
    puts euros
else choixUtilisateur != 1
    puts francs
end

(J'ai arrondi 6.55957 en 6.56 car ça me faisait sinon des chiffres à plusieurs dizaines de décimales aprés la virgule.)

Et j'ai rajouté

choixUtilisateur != 1

dans le code pour voir si ça arrangeait mon problème mais rien n'y fait.

Hors ligne

#6 Le 25/07/2008, à 21:36

jojo-lapin

Re : [Débutant] Problème de Script avec Ruby

C'est toujours le même genre de problème, tu compares une chaîne de caractère se terminant par "\n"  avec un entier.
voici le code qui fonctionne:

choixUtilisateur = gets.chomp

if choixUtilisateur == "1"
    puts euros
else 
    puts francs
end

#7 Le 25/07/2008, à 21:59

Fallout_Xtreme

Re : [Débutant] Problème de Script avec Ruby

Merci beaucoup pour toute ton aide !
Je viens de comprendre mon erreur. (Je sais je suis long à la détente ^^)

Il ne me reste plus qu'à virer le "nil" qui se met dans le résultat final aprés le sigle E ou F.

Merci encore !

Bonne fin de soirée.

Fallout_Xtreme smile

Hors ligne