2015年1月11日日曜日

150111(3)

Ruby


「アルゴリズムとデータ構造」のRuby版。

リストを使って入力したいくつかの数値とその合計を出力する。

# -*- coding: cp932 -*-

class TagListNode
  attr_reader :data
  attr_accessor :prev, :next
  def initialize(data)
    @data = data
    @prev = nil
    @next = nil
  end
end

buf = nil
firstnode = nil
lastnode = nil
while buf != 0
  printf("整数を入力してください(0を入力すると終了):")
  buf = gets().to_i
  if buf != 0
  # 新しいノードを作成
  newnode = TagListNode.new(buf)
  newnode.next = nil
    if lastnode != nil
      # すでにあるリストの末尾に新しいノードをつなげる
      lastnode.next = newnode
      newnode.prev = lastnode
      lastnode = newnode
    else # これが最初の要素だった場合
      firstnode = lastnode = newnode
      newnode.prev = nil
    end
  end
end

# 合計値を算出
printf("--入力されたのは以下の数です--\n");
sum = 0
thisnode = firstnode
while thisnode != nil
  printf("%d\t",thisnode.data)
  sum += thisnode.data
  thisnode = thisnode.next
end
printf("\n----\n以上の数の合計値は%dです。\n", sum)

0 件のコメント:

コメントを投稿