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?

列と行の合計を出力する問題

0
Posted at

はじめに

列と行のそれぞれの合計を出力するコードを書いてみました。
縦×横=4×4の任意の表から、行と列の合計を出力するといった問題になります。

こちらの値をインプットします。

sample.rb
   9|  85|  92|  20|
  68|  25|  80|  55|
  43|  96|  71|  73|
  43|  19|  20|  87|

アウトプットがこちらです。

sample.rb
   9|  85|  92|  20| 206
  68|  25|  80|  55| 228
  43|  96|  71|  73| 283
  43|  19|  20|  87| 169
-------------------------
 163| 225| 263| 235| 886

コードの解説

input変数の配列の各要素を文字列でつなげて1行で印字することは難なくできるかと思います。このとき、数字が1桁であっても、2桁であっても、桁ずれを起こすことなく印字する必要があります。そのときに利用するのが、rjustメソッドです。rjustメソッドを利用することで、文字列を右詰めにして、先頭に指定した数の空白をセットすることができます。そして次に、各列の要素を合計して、最終列に印字することも難なくできるかと思います。

この問題で一番難しいと感じる部分は、各行を印字しながら、列単位での合計も加算しないといけない箇所だと思います。列の加算はこの部分で行っています。

sample.rb
sum_row[idx] = sum_row[idx] + col.to_i

そして、すべての行を印字した後に、最終行に各列の合計を印字します。変数にセットした各列の合計を取得している箇所がこちらです。

sample.rb
col_sum << " #{sum.to_s.rjust(3)}|"

更に、各列の合計の総合計も加算します。

sample.rb
sum_sum = sum_sum + sum.to_i

コード

sample.rb
def row_col_count(data)
  
    sum_row = [0,0,0,0]
    
    # 行のループ
    4.times do |cnt|

        col_work = ""
        sum_col  = 0

        # 列のループ
        data[cnt].each_with_index do |col, idx|
          
          col_work << " #{col.to_s.rjust(3)}|"
          sum_col = sum_col + col.to_i

          sum_row[idx] = sum_row[idx] + col.to_i
        end

        # 行+行の総合計
        puts "#{col_work} #{sum_col.to_s.rjust(3)}"
    end

    col_sum = ""
    sum_sum = 0

    # 行の合計
    sum_row.each do |sum|
      col_sum << " #{sum.to_s.rjust(3)}|"
      sum_sum = sum_sum + sum.to_i
    end

    # 行の総合計
    puts "-" * 25
    puts "#{col_sum} #{sum_sum.to_s.rjust(3)}"
end

input = [[9, 85, 92, 20],
         [68, 25, 80, 55],
         [43, 96, 71, 73],
         [43, 19, 20, 87],
         [95, 66, 73, 62]]
          
row_col_count(input)

実行結果

   9|  85|  92|  20| 206
  68|  25|  80|  55| 228
  43|  96|  71|  73| 283
  43|  19|  20|  87| 169
-------------------------
 163| 225| 263| 235| 886
0
0
0

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?