0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【完全自分用】Rubyの問題を解いて知識を深める②

Posted at

はじめに

前回に引き続き、完全に自分用アウトプットです。
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
のように追加されていく。

おわりに

知識の深堀り続けていきます。

0
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?