はじめに
前回に引き続き、完全に自分用アウトプットです。
Rubyの問題を解いて、プログラムの知識や考え方を深堀りするために記述します。
Q6 繰り返し処理
- 1〜10の数字を順番に足し合わせる。
- 足し算の合計値がターミナルに出力される
- 繰り返し処理で記述しなければならない。
sum = 0 #sum = 0で常に結果を保存する変数を準備
10.times do |i|
sum += i + 1 #1〜10の数値を順番に足していく
end
puts sum #値を出力
Q7 配列を利用したrubyプログラムの作成
以下の配列から任意の数字を探して何番目に含まれているかという結果を返すsearchメソッドを、each_with_indexを用いて作成する
input = [3, 5, 9 ,12, 15, 21, 29, 35, 42, 51, 62, 78, 81, 87, 92, 93]
def search(target_num, input)
input.each_with_index do |num, index| #配列にinputメソッドを定義
if num == target_num
puts "#{index + 1}番目にあります" #配列が0から始まることを考慮した記述
return
end
end
puts "その数は含まれていません"
end
input = [3, 5, 9 ,12, 15, 21, 29, 35, 42, 51, 62, 78, 81, 87, 92, 93]
search(11, input)
Q8 特定の文字列を検知するプログラムの実装
以下の要件を満たすcheck_nameメソッドを実装
- 名前を入力すると「登録が完了しました」という文字列を出力すること
- 名前の中にピリオド(.)がある場合は、「 "!エラー!記号は登録できません"」という文字列を出力すること
- 名前の中に空白(半角のみ)がある場合は、「 "!エラー!空白は登録できません"」という文字列を出力すること
def check_name(str)
if str.include?(".")
puts "!エラー!記号は登録できません"
elsif str.include?(" ")
puts "!エラー!空白は登録できません"
else
puts "登録が完了しました"
end
end
puts "登録したい名前を入力してください(例)YamadaTaro"
str = gets
check_name(str)
include?メソッドは指定した値が配列や文字列に含まれているかを判断するメソッド。
上記では()にしているが["."," "]のように複数の値を入力することが可能。
Q9 条件分岐
ターミナルから数字を入力して、数字に応じて以下のように出力するプログラムを書く。
- 10以下なら10以下の数字です
- 10より大きい数値なら10より大きい数字です
- 10以下でかつ0以下なら0以下の数字です
input = gets.to_i
if input <= 0
puts "0以下の数字です"
elsif input <= 10
puts "10以下の数字です"
else
puts "10より大きい数字です"
end
Q10 eachの入れ子
果物の名前と値段が入った配列がある。
fruits_price = [["apple", [200, 250, 220]], ["orange", [100, 120, 80]], ["melon", [1200, 1500]]]
この配列を用いて、果物の名前とそれぞれの合計額が出力されるコードを記述。
以下が出力されるコード。
(出力)
appleの合計金額は670円です
orangeの合計金額は300円です
melonの合計金額は2700円です
fruits_price = [["apple", [200, 250, 220]], ["orange", [100, 120, 80]], ["melon", [1200, 1500]]]
fruits_price.each do |fruit| #まずはブロック変数に
sum = 0 #金額を入れるsumを準備
fruit[1].each do |price|
sum += price
end
puts "#{fruit[0]}の合計金額は#{sum}円です。"
end
appleの場合
sum = 0
sum = 0 + 200
sum = 200
sum = 200 + 250
sum = 450
sum = 450 + 220
sum = 670
のように追加されていく。
おわりに
知識の深堀り続けていきます。