-
Notifications
You must be signed in to change notification settings - Fork 0
/
eau14.rb
102 lines (93 loc) · 2.67 KB
/
eau14.rb
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
#!/usr/bin/env ruby
#programme qui trie une liste de nombres. Votre programme devra implementer l'algorithme du tri par selection.afficher error sinon
#https://fr.wikipedia.org/wiki/Tri_par_s%C3%A9lection
require 'bigdecimal'
require 'bigdecimal/util' #to_d
#fonction utile qui trouve le nombre d'argument comme .length()
def nombreArgument
i = 0
while ARGV[i]
i += 1
end
return i
end
#fonction utile qui mesure la longueur d'une array ou string comme .length()
def longueurArgument(mot)
i = 0
while mot[i]
i += 1
end
return i
end
#fonction pour trouver un caractere dans un array, comme .index()
def trouverDansArray(carac, array)
sortie = "ok"
index = longueurArgument(array)
i = 0
while i < longueurArgument(array) && sortie == "ok"
if array[i] == carac
sortie = "erreur"
index = i
end
i = i + 1
end
return index, sortie
end
#fonction utile qui test si l'argument (nombre suppose entier) contient . ou , avant conversion et calcul
def fauxFloatEntier()
i = 0
sortie = "ok"
while ARGV[i] && sortie == "ok"
if trouverDansArray(",", ARGV[i])[1] == "erreur" || (ARGV[i] != (ARGV[i].to_i).to_s && ARGV[i] != (ARGV[i].to_f).to_s)
sortie = "erreur"
end
i = i + 1
end
return sortie
end
#fonction utile qui realise le trie suivant la methode par selection
def mySelectSort(array)
n = longueurArgument(array)
i = 0
while i <= n - 2
min = i
j = i + 1
while j <= n - 1
if array[j] < array[min]
min = j
end
#puts displayArray(array)
j = j + 1
end
if min != i
temp = array[min]
array[min] = array[i]
array[i] = temp
end
#puts displayArray(array)
i = i + 1
end
return array #new_array
end
def displayArray(array)
sortie = ""
i = 0
while array[i]
sortie = sortie + (array[i].to_f).to_s + " "
i = i + 1
end
sortie = sortie[0...-1]
return sortie
end
#coeur du programme
if nombreArgument <= 1 || fauxFloatEntier() == "erreur"
puts "error"
else
array = []
i = 0
while ARGV[i]
array.push(ARGV[i].to_d)
i = i + 1
end
puts displayArray(mySelectSort(array))
end