• 検索結果がありません。

実習内容1(実習時間中に行うもの)

N/A
N/A
Protected

Academic year: 2021

シェア "実習内容1(実習時間中に行うもの)"

Copied!
2
0
0

読み込み中.... (全文を見る)

全文

(1)

2002年度・計算機数学・第11回実習

1

実習内容1(実習時間中に行うもの)

配布したプログラムの内容を理解した上で,以下のプログラムを書きなさい.

1.

プログラムの引数として,

Y , M , D

の整数値を入力して,西暦Y年M月N日がその年の第何日目にな るかを出力するプログラムを書け. すなわち,プログラム名を

count_days

としたとき,

./count_days 2002 1 1

と実行すると

1

と言う出力をするプログラムのことである.

ただし, 存在しない日時を入力したときには

error

と出力すること.

2.

標準入力から1つ以上の空白で区切られた数値列として

Y , M , D

の整数値を入力する. 西暦Y 年M月N日がその年の第何日目になるかを出力するプログラムを書け. すなわち, プログラム名を

count_days

として,

data

2002 1 1 1999 12 31

としたとき,

cat data | ./count_days

と実行すると

1 365

と出力するプログラムのことである.

ただし, 存在しない日時を入力したときには

error

と出力すること.

実習内容2(各自で自習)

1.

標準関数

strncmp

を実現せよ.

2.

関数

atoi

を,以下の仕様で作成せよ.

int atoi(char *str)

基本仕様

str

に与えられた文字列が10進整数をあらわす文字列の時には, その数値を返す. 10 進整数をあらわす文字列とは,先頭に0個以上の空白文字,その直後に

+,

または

-

の符号文字, その直後に

0123456789

の数値文字が並んだ文字列である.

エラー 10進整数をあらわさない文字列の場合には,

0

を返し, 大域変数

_error

-1

をセットす る. 10進整数をあらわすが,

INTMIN

INTMAX

の範囲を越える値の時には,

0

を返し,大域変

_error

-2

をセットする.

(FreeBSD

atoi

関数のソースコードを参考にせよ.)

ex11.tex,v 1.7 2002-07-02 15:29:20+09 naito Exp

(2)

2

2002年度・計算機数学3・第11回実習

3.

2つの同じ型の変数の値を入れ替える関数を書け. (ヒント:標準関数

qsort

の引数の渡し方を参 考にせよ.)

4.

3個の正の整数の組

{a

i

}

3i=1 に対して,その最大公約数

gcd({a

i

})

を求める関数を書け. あらかじめ 定められた最大

n

個の正の整数の組に対しても,容易に拡張できるように書くこと. 特に,これを計 算する関数に対して,配列

a

とその有効な要素数を渡して計算するように書くこと.

プログラム解説

prog11-01.c

西暦Y年M月N日が,その年の第何日目になるかを返す関数.

配列とポインタの扱いに注意.

prog11-02.c

配列とポインタの等価性.

prog11-03.c

文字列のコピーの方法.

prog11-04.c

コマンドライン引数からのデータの入力.

./prog11-04Ã1Ã2Ã3

として実行してみる.

prog11-05.c

標準入力から文字列を読み取り,整数値として配列に格納する.

1Ã2Ã3

1Ã2Ã3Ã4Ã5Ã6Ã7Ã8Ã9Ã0 1Ã2Ã3Ã4Ã5Ã6Ã7Ã8Ã9Ã0Ã1 -1Ã2Ã3Ã4Ã5Ã6Ã7Ã8Ã9 Ã-1Ã2Ã3Ã4Ã5Ã6Ã7Ã8

という内容のファイルを作成し,それを

data

として,

cat data | ./prog11-05

として実行してみる.

prog11-06 prog11-05.c

を2つのファイルに分割したもの.

make

とするとコンパイルとリンクを行ってくれる. 特に, 大域変数の受け渡し方に注意すること.

strtol.c, atoi.c FreeBSD 4.5 Release

の標準関数

atoi (strtol)

のソースコード.

ex11.tex,v 1.7 2002-07-02 15:29:20+09 naito Exp

参照

関連したドキュメント

英語教育について 1 英語教育充実の背景 ○

<アレンジ> 1)セレクトボックスで値を変更すると背景色を指定した色に変更するようにしましょ う。

業務内容および改善等目標を把握し、技術組織等の活性化を目

本発表では実時間ステートチャートの振舞いに対して L¨ uttgen らの SPL( Statechart Process

ループ内部にある printf 関数からの出力が得られていないので, 明らかに while ループの中に一度も入っ ていないことがわかります..

• 特定のファイルにデータを出力する場合も, fopen 関数と fclose 関数を用いて, ファイル にファイルポインタを結び付ければ,

●設備:学校に初めてインターネットが接続された時,回線は学校図書室に引き込まれ

種々の 目安として、