51 lines
1.2 KiB
Ruby
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<69>.
|
|||
|
# 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
|
|||
|
|
|||
|
|
|||
|
|