Rubyの初心者向け問題2-4:数字の配列を操作するプログラムを作ろう
この問題を解くために必要な知識:
【レベル1の知識】
コメントの書き方、変数と定数、基本データ型、四則演算と演算子、入力と出力、文字列操作、分岐処理(if、if~else、elsif、case)、繰り返し処理(for、while、until、each)、範囲(Range)、例外処理(begin-rescue-end)
【レベル2の知識】
配列(Array)、ハッシュ(Hash)、コレクション操作(配列、ハッシュの操作)、Enumerableモジュール
<<前の問題 | 問題集Top |
次の問題>> |
Ruby練習問題2-4:数字の配列を操作するプログラムを作ろう
複数の数字が含まれる配列を操作するプログラムを作成しましょう。
以下の配列内の偶数と奇数をそれぞれカウントし、その結果を表示してください。また配列内の全ての数字の合計も計算しましょう。
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
- 配列
numbers
内の偶数の数をカウントすること。 - 配列
numbers
内の奇数の数をカウントすること。 - 配列
numbers
内の全ての数字の合計を計算すること。
ただし、以下のような実行結果となること。
----- ↓出力される結果の例↓ -----
偶数の数: 5 奇数の数: 5 数字の合計: 55
----- ↑出力される結果の例↑ -----
解答例
例えば以下のようなプログラムが考えられます。
********************
# 数字の配列 numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] # 偶数と奇数のカウントを初期化 even_count = 0 odd_count = 0 # 数字の合計を初期化 sum = 0 # 配列内の各数字をチェック numbers.each do |number| # 数字を合計に追加 sum += number if number.even? # 偶数の場合のカウントを増やす even_count += 1 else # 奇数の場合のカウントを増やす odd_count += 1 end end # 結果を表示 puts "偶数の数: #{even_count}" puts "奇数の数: #{odd_count}" puts "数字の合計: #{sum}"
********************
コードの解説
このRubyコードは、配列内の数字を順にチェックして、偶数と奇数の数をカウントし、数字の合計を求めるプログラムです。
配列や each
メソッドの使い方を学びながら、基本的な制御構造を理解するための良い例です。以下に、コードの各部分を解説していきます。
配列の定義
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
ここでは numbers
という配列を定義しています。この配列には1から10までの数値が格納されています。
配列は、複数の値をまとめて管理するために非常に便利なデータ構造です。
カウンターと合計の初期化
even_count = 0 odd_count = 0 sum = 0
even_count
は偶数をカウントするための変数、odd_count
は奇数をカウントするための変数、sum
は数値の合計を保持するための変数です。
これらは最初に0で初期化されています。
配列内の各数字を繰り返し処理
numbers.each do |number| sum += number if number.even? even_count += 1 else odd_count += 1 end end
each
メソッドを使って、numbers
配列内の各要素を順に取り出し、処理を行っています。
sum += number
: 取り出した数字をsum
に加えています。if number.even?
:even?
メソッドは、その数字が偶数かどうかを確認するメソッドです。偶数ならeven_count
を1増やし、奇数ならodd_count
を1増やします。
結果の表示
puts "偶数の数: #{even_count}" puts "奇数の数: #{odd_count}" puts "数字の合計: #{sum}"
最後に、カウントされた偶数と奇数の数、そして合計をそれぞれ表示しています。
puts
メソッドを使って、#{}
の中に変数を埋め込むことで結果を表示します。
まとめ
このコードでは、配列の各要素に対して繰り返し処理を行い、偶数と奇数のカウントを管理しながら、数値の合計を求めています。
Rubyの基本的な配列操作や、each
ループの使い方、条件分岐の使い方を学ぶのに最適な例です。
<<前の問題 |
問題集Top |
次の問題>> |
この問題への質問・コメント
この問題を作成するにあたりAIを活用しています。
問題ないことは確認していますが、もし間違いや表現の違和感などありましたら、ご指摘頂けると大変助かります。