-
Notifications
You must be signed in to change notification settings - Fork 1
/
paises4.rb
128 lines (106 loc) · 4.88 KB
/
paises4.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
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
#encoding:UTF-8
=begin
La Unión Europea ha creado un conjunto de datos basados en su estadísticas anuales y quiere obtener
información de cada uno de ellos. Por tal razón se le solicita a usted lo siguiente:
a) Desarrollar un subprograma que permita determinar el pais con mayor población en un muestra dada.
b) Desarrollar un subprograma que permita ordernar de manera asc (de menor a mayor) los paises basados en su población.
c) Desarrollar un subprograma que permita determinar la población promedio en una muestra dada.
d) Desarrollar un subprograma que permita saber cual es la desviación estándar de las muestras.
Funciones:
Desviación estándar:
=end
def paisConMasPoblacion(muestras)
size = muestras.length
maxPoblacion = 0
for i in 0..(size-1)
if (muestras[i][1] > maxPoblacion)
maxPoblacion = muestras[i][1]
nombrePaisMaxPoblacion = muestras[i][0]
end
end
return nombrePaisMaxPoblacion
end
def ordenarPorPoblacion(muestras)
size = muestras.length
iteraciones = size - 2
return muestras unless iteraciones > 0
cambios = 2
while cambios > 1 do
cambios = 0
0.upto(iteraciones) do |i|
if muestras[i][1] > muestras[i + 1][1]
muestras[i], muestras[i + 1] = muestras[i + 1], muestras[i]
cambios = cambios + 1
end
end
iteraciones = iteraciones - 1
end
return muestras.map { |muestra| muestra[0] }
end
def poblacionPromedio(muestras)
size = muestras.length
promedio = 0
suma = 0.0
for i in 0..(size-1)
suma = muestras[i][1] + suma
end
promedio = suma/size
return promedio.round(2)
end
def desviacionEstandar(muestras)
size = muestras.length
promedio = poblacionPromedio(muestras)
suma = 0.0
for i in 0..(size-1)
suma = (muestras[i][1] - promedio)**2 + suma
end
desviacion = (1.00/(size-1))*suma
desviacion = Math.sqrt(desviacion)
return desviacion.round(2)
end
#--- zona de test ----
def test_paisConMasPoblacion
muestra1 = [['Albania',28750],['Andorra',72766],['Austria',8023244],['Belarus',10415973],['Belgium',10170241],['Bosnia and Herzegovina',2656240]]
muestra2 = [['Bulgaria',8612757],['Croatia',5004112],['Czech Republic',10321120],['Denmark',5249632],['Estonia',1459428],['Faroe Islands',43857]]
muestra3 = [['Finland',5105230],['France',58317450],['Germany',83536115],['Gibraltar',28765],['Greece',10538594],['Hungary',10002541]]
print validate('Belarus', paisConMasPoblacion(muestra1))
print validate('Czech Republic', paisConMasPoblacion(muestra2))
print validate('Germany', paisConMasPoblacion(muestra3))
end
def test_ordenarPorPoblacion
muestra1 = [['Albania',28750],['Andorra',72766],['Austria',8023244],['Belarus',10415973],['Belgium',10170241],['Bosnia and Herzegovina',2656240]]
muestra2 = [['Bulgaria',8612757],['Croatia',5004112],['Czech Republic',10321120],['Denmark',5249632],['Estonia',1459428],['Faroe Islands',43857]]
muestra3 = [['Finland',5105230],['France',58317450],['Germany',83536115],['Gibraltar',28765],['Greece',10538594],['Hungary',10002541]]
print validate(['Albania','Andorra','Austria','Bosnia and Herzegovina','Belgium','Belarus'], ordenarPorPoblacion(muestra1))
print validate(['Faroe Islands','Estonia','Croatia','Denmark','Bulgaria','Czech Republic'], ordenarPorPoblacion(muestra2))
print validate(['Gibraltar','Finland','Hungary','Greece','France','Germany'], ordenarPorPoblacion(muestra3))
end
def test_poblacionPromedio
muestra1 = [['Albania',28750],['Andorra',72766],['Austria',8023244],['Belarus',10415973],['Belgium',10170241],['Bosnia and Herzegovina',2656240]]
muestra2 = [['Bulgaria',8612757],['Croatia',5004112],['Czech Republic',10321120],['Denmark',5249632],['Estonia',1459428],['Faroe Islands',43857]]
muestra3 = [['Finland',5105230],['France',58317450],['Germany',83536115],['Gibraltar',28765],['Greece',10538594],['Hungary',10002541]]
print validate(5227869.0, poblacionPromedio(muestra1))
print validate(5115151.0, poblacionPromedio(muestra2))
print validate(27921449.17, poblacionPromedio(muestra3))
end
def test_desviacionEstandar
muestra1 = [['Albania',28750],['Andorra',72766],['Austria',8023244],['Belarus',10415973],['Belgium',10170241],['Bosnia and Herzegovina',2656240]]
muestra2 = [['Bulgaria',8612757],['Croatia',5004112],['Czech Republic',10321120],['Denmark',5249632],['Estonia',1459428],['Faroe Islands',43857]]
muestra3 = [['Finland',5105230],['France',58317450],['Germany',83536115],['Gibraltar',28765],['Greece',10538594],['Hungary',10002541]]
print validate(4886241.63, desviacionEstandar(muestra1))
print validate(3961012.73, desviacionEstandar(muestra2))
print validate(34463721.6, desviacionEstandar(muestra3))
end
def validate (expected, value)
expected == value ? "." : "F"
end
def test
puts "Test de prueba del programa"
puts "---------------------------"
test_paisConMasPoblacion
test_ordenarPorPoblacion
test_poblacionPromedio
test_desviacionEstandar
puts " "
end
test