東北公益文科大学2年 情報表現 試験問題

実際には出題されなかったものも含まれている。

出題者:   大駒、佐藤、広瀬
持ち込み:  参考書、ノート,コピー、メモ、電卓は可、パソコンは不可。
回収:    解答用紙のみ回収する、問題用紙は持ち帰ってよい。

(1)標準入力から読み込んだ携帯電話番号について,携帯電話
   かPHSかを判定して結果を表示するプログラムを作成せよ。
  ただし、携帯電話の番号は090-XXXX-XXXXまたは
  080-XXXX-XXXX、PHS電話番号は070-XXXX-XXXXのような書式とする。

(2)標準入力から読み込んだ文字列について、アルファベット
   の小文字を大文字に変えて出力するプログラムを作成せよ。

(3)文字列を引数として受け取って、その中の数字の個数を返すメソッドを作れ。
   例: suuji("Jan. 20, 2004 Tuesday")→6

(4)次のプログラムを実行したときの出力を示せ。

s=[10,96,50,21,-15,86,-20]
s.sort{|x,y|(y<=>x)}.each do |number|
   printf "%s\n",number
end

(5)次は何をするプログラムであるか、簡単に文章で記せ。

while line=gets
   line.split(/[\s\,\.\-\(\)]+/).each do |word|
       if word=~/ed$/
          printf "%s\n",word
       end
   end
end

(6)次のプログラムを実行すると文字列が3行出力される。出力される文字列をそ
  れぞれ答えよ。
  1行目:
        ~~~~~~~~~~~~~~~~~~~~~~~
  2行目:
        ~~~~~~~~~~~~~~~~~~~~~~~
  3行目:
        ~~~~~~~~~~~~~~~~~~~~~~~

  【プログラム】
        string="BM eIrbrqyq zC hOrfixs tZmfabss!"

        len=string.length
        printf "%d文字です\n", len
        i=1
        while (i<string.length)
          printf "%c", string[i]
          i+=2
        end
        printf "\n"
        i=0
        while (i<string.length)
          ch = string[i, 1]
          if /[A-Z]/i =~ ch
            ch[0] -= 1
          end
          printf "%c", ch[0]
          i+=2
        end
        printf "\n"

(7)整数が複数個入っている配列を引数として受け取り、その平均値を
   返すメソッド avg() を作成せよ。

(8)以下のように、「カタカナ苗字」、「カタカナ名前」、「漢字苗字」、「漢
   字名前」、「電話番号」がカンマで区切られて1行を構成するデータがある。

        コウエキ,タロウ,公益,太郎,090-9999-1234
        イイモリ,ハナコ,飯森,花子,090-9999-5678
        ヤマガタ,ジロウ,山形,次郎,090-9999-9999
          :
         〜以下同様のデータが多数続く〜

このようなデータファイルの中から特定の条件を満たす行だけを選別したい。
各設問の条件を満たすデータのみを選びたい場合に適切な正規表現を記せ。

        例: 電話番号の下4桁が全部同じ人を選びたい場合
            (答)  /(\d)\1\1\1$/

        問:
        (a) 電話番号が070-で始まる人だけを選びたい場合
        (b) 苗字が「アツミ」の人だけを選びたい場合
        (c) 名前が「アツミ」の人だけを選びたい場合
        (d) 苗字が「タカタ」または「タカダ」の人だけを選びたい場合
        (e) 苗字が2文字の人だけを選びたい場合
        (f) 苗字(カタカナ)の1文字目と名前(カタカナ)の1文字目が同じ
            人だけを選びたい場合