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é.
|
|
# 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
|
|
|
|
|
|
|