=====1=====
(2)を四番まで
=====2=====
food = Hash.new
foodex = Hash.new
open("foods.txt","r:utf-8") do |foods|
while line = foods.gets
if /(\S+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\S+)/ =~ line
food[$1] = [$2.to_i,$3.to_i,$4.to_i,$5]
foodex[$1] = [$2.to_i,$3.to_i,$4.to_i,$5]
end
end
end
print("商品選択 商品A:0 商品B:1 商品C:2\n")
x = gets.chomp!.to_i
print"-店舗コード-+-商品A-+-商品B-+-商品C--+-立地---\n"
i = 0
a = 0
b = 0
o = 0
s = 0
r = 0
e = 0
top10 = Hash.new
for n in food.keys.sort {|a, b| food[b][x] <=> food[a][x]}
if i < 10
result = sprintf("%10s%8d%8d%8d%8s\n",
n,
food[n][0], food[n][1], food[n][2],
food[n][3])
puts result
i += 1
if food[n][3] == "住宅街A"
a += 1
elsif food[n][3] == "住宅街B"
b += 1
elsif food[n][3] == "オフィス街"
o += 1
elsif food[n][3] == "学校"
s += 1
elsif food[n][3] == "幹線道路"
r += 1
else
e += 1
end
end
end
besum = 0
afsum =0
if a >= 5
print("この商品は住宅街Aの店舗で売り上げが多いため、高齢者に絞った広告を推奨する。\n")
for p in food.keys do
if food[p][3] == "住宅地A"
foodex[p][x] = food[p][x] * 1.5
else
foodex[p][x] = food[p][x] * 1.1
end
besum += food[p][x]
afsum += foodex[p][x]
end
printf("高齢者をターゲットとして絞った場合売り上げが%d個から%d個へ増加することが予想される。\n", besum,afsum)
elsif b >= 5
print("この商品は住宅街Bの店舗で売り上げが多いため、若者に絞った広告を推奨する。\n")
for p in food.keys do
if food[p][3] == "住宅地B"
foodex[p][x] = food[p][x] * 1.5
else
foodex[p][x] = food[p][x] * 1.1
end
besum += food[p][x]
afsum += foodex[p][x]
end
printf("若者をターゲットとして絞った場合売り上げが%d個から%d個へ増加することが予想される。\n", besum,afsum)
elsif o >= 5
print("この商品はオフィス街の店舗で売り上げが多いため、会社員に絞った広告を推奨する。\n")
for p in food.keys do
if food[p][3] == "オフィス街"
foodex[p][x] = food[p][x] * 1.5
else
foodex[p][x] = food[p][x] * 1.1
end
besum += food[p][x]
afsum += foodex[p][x]
end
printf("会社員をターゲットとして絞った場合売り上げが%d個から%d個へ増加することが予想される。\n", besum,afsum)
elsif s >= 5
print("この商品は学校の店舗で売り上げが多いため、学生に絞った広告を推奨する。\n")
for p in food.keys do
if food[p][3] == "学校"
foodex[p][x] = food[p][x] * 1.5
else
foodex[p][x] = food[p][x] * 1.1
end
besum += food[p][x]
afsum += foodex[p][x]
end
printf("学生をターゲットとして絞った場合売り上げが%d個から%d個へ増加することが予想される。\n", besum,afsum)
else
print("ターゲットを絞る必要がない。\n")
for p in food.keys do
foodex[p][x] = food[p][x] * 1.15
besum += food[p][x]
afsum += foodex[p][x]
end
printf("売り上げは%d個から%d個へ増加することが予想される。\n", besum,afsum)
end
=====3=====
1.
商品選択 商品A:0 商品B:1 商品C:2
0
-店舗コード-+-商品A-+-商品B-+-商品C--+-立地---
0025 1405 501 1473 住宅街A
0002 1393 1340 1206 オフィス街
0014 1329 950 1483 住宅街A
0008 1326 868 858 住宅街A
0004 1260 1362 825 オフィス街
0027 1218 322 858 住宅街A
0020 1190 1307 179 オフィス街
0021 1145 1375 1416 住宅街B
0007 1143 555 1186 幹線道路
0010 1137 924 1084 住宅街B
ターゲットを絞る必要がない。
売り上げは24727個から28436個へ増加することが予想される。
2.
商品選択 商品A:0 商品B:1 商品C:2
1
-店舗コード-+-商品A-+-商品B-+-商品C--+-立地---
0024 175 1495 446 オフィス街
0021 1145 1375 1416 住宅街B
0004 1260 1362 825 オフィス街
0002 1393 1340 1206 オフィス街
0017 849 1321 1214 住宅街B
0020 1190 1307 179 オフィス街
0023 348 1268 1017 幹線道路
0029 509 1168 595 住宅街B
0011 394 1134 545 幹線道路
0006 550 1024 593 オフィス街
この商品はオフィス街の店舗で売り上げが多いため、会社員に絞った広告を推奨する。
会社員をターゲットとして絞った場合売り上げが24367個から29521個へ増加することが予想される。
=====4=====
1~25はopenメソッドを使いファイルのデータをハッシュに入力し、これから使う変数を指定している。
27ではsortを使い、ハッシュを並べ替え、28~34で上位10個だけが表示されるようにしている。
36~50ではトップ10店舗のうち同じ店舗が何個あるか確認している。
57以降は36~50で確認した店舗数を条件としたif分でどの客層をターゲットとするかをprintで提案した。
さらに課題4番の条件をもとに、配列と倍率を使って計算し合計を求めた。
最後にもとの売り上げ数を期待売り上げ数をprintで表示した。
=====5=====
キーとバリューを使った配列は苦手。
値を何度も使っているので変数化、条件分岐をつかってもっと短く書けそうだったが、分からなくなったのであきらめた。