cours0708/P5B/ruby/election.rb

51 lines
1.2 KiB
Ruby

#!/usr/bin/ruby -w
# election Miss RUBY
# on charge un tableau (Array) de prenoms a partir d'un fichier
# On parcourt "circulairement" cette liste . A chaque réception du
# signal SIGINT, l'element courant est supprimé.
# Quand il ne reste plus qu'un seul nom, on affiche la gagnante
#
#--------------------------------------------------------------------------
print "Entrer le nom du fichier\n";
fich= gets;
fich = fich.chomp
# test si c'est un fichier régulier
unless File.file?(fich)
puts "PB ! Fichier inexistant"
exit
end
# procedure d'elimination d'une candidate
trap("SIGINT" ){ #attention a la place de l'accolade ouvrante
puts $girls[$i] + " est eliminee !"
$girls.slice!($i) # on elimine la candidate $i
# $girls[$i,1] = [] # variante
}
# chargement de toutes les lignes du fichier (de nom saisi)dans un tableau
$girls = IO.readlines(fich);
$i=0 ; # indice de la candidate courante
# notation $i et $t indispensable (var. globales) pour que visible partout
# le <trap> défini AVANT en a besoin !
while true
if $girls.length == 1
puts $girls[0] + "est elue Miss RUBY! Bravo!!"
exit
else
if $i < $girls.length - 1
$i = $i + 1
else
$i = 0
end
end
end