第5回 の課題

宛先 c-1-5@e.koeki-u.ac.jp

以下の問題のうちどれか1問を選んでプログラムを修正せよ

  1. tabaiadd.c は、 100桁までの巨大数値の足し算ができる。200桁まで計算できるように 改良せよ。

  2. tabaiadd.c を実行して 表示される結果は、先頭の連続する0000…が出力される。これは無駄なの で、先頭の連続する0は出力しないように改良せよ。実行例は以下のよう になる。

    % ./tabaiadd
    ながーい桁数の数(1)を入れてね: 555
    ながーい桁数の数(2)を入れてね: 554
    1109
    % ./tabaiadd
    ながーい桁数の数(1)を入れてね: 76457876537643765476843
    ながーい桁数の数(2)を入れてね: 457265782367823654
    76458333803426133300497
    
  3. tabaiadd.c を実行すると 大きな数値をキーボードから読む。これを変更し、巨大数値その1を number.xというファイルから、巨大数値その2を number.yというファイルから読むように変更せよ。 実行例は以下のようになる。

    % cat number.x
    76457876537643765476843
    % cat number.y
    457265782367823654
    (このような状態で)
    % ./tabaiadd
    00000000000000000000000000000000000000000000000000000000000000
    00000000000000076458333803426133300497
    
  4. 設問3に加え、結果となる数値をanswerというファイルに 出力するように変更せよ。

  5. 設問4に加え、設問2と同様結果となる数値の先頭の連続する0を 省略するように変更せよ。

  6. 巨大数値を1つを読み込み、それを2倍した巨大数値を出力する プログラム tabai2x.c を作成せよ。

  7. 21000を求めることのできる プログラム 2-1000.c を作成せよ。

  8. 巨大数値を2つ読み込み、引き算をした結果を表示するプログラム tabaisub.c を作成せよ。ただし、正の数同士の引き算で 大きな数から小さな数を引いた結果が得られれば良い。

  9. 巨大数値を2つ読み込み、引き算をした結果を表示するプログラム tabaisub2.c を作成せよ。ただし、正の数同士の引き算で 小さな数から大きな数を引いても正しい結果が得られるようにする。

  10. tabaiadd.c は、 10進数1桁をchar型配列の1要素に結びつけて計算した。これを 10進2桁をまとめてchar型配列の1要素に結びつけるよう変更した tabai100.c を作成せよ。

  11. tabaiadd.c は、 10進数1桁をchar型配列の1要素に結びつけて計算した。これを 10進4桁をまとめてint配列の1要素に結びつけるよう変更した tabai-int.c を作成せよ。

  12. tabaiadd.c は、 10進数1桁をchar型配列の1要素に結びつけて計算した。これを 10進n桁をまとめてint配列の1要素に結びつけるよう変更した tabai-intn.c を作成せよ。n はコンパイル時に可変とする(実行時可変でもよい)。n の指定可能範囲は適宜求めよ。

以上、自分が作成したプログラムによる計算結果が正しいことの検算は、 bc コマンドを利用せよ。

レポート提出方法

Subjectを

#09 多倍長演算 - 解いた番号

とし、本文の先頭に

氏名: 公益太郎
学籍番号: c114xxx

という書式で自分のものを入れて、上記宛先に送ること。 本文は、

  1. 選択した番号とプログラム本体
  2. プログラムの実行結果画面
  3. bcコマンドによる検算結果画面
  4. 修正した部分のみの説明(なるべく短く)
  5. 感想
  6. Multipart形式で付けたプログラムファイル

という構成にすること。


本日の目次