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

「行数」を数える変数はに初期化すべきである

N/A
N/A
Protected

Academic year: 2021

シェア "「行数」を数える変数はに初期化すべきである"

Copied!
2
0
0

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

全文

(1)

演習¾¼

指定した英語のテキストファイルの中の文字数と行数を数えるプログラムを作成せよ。作成 したプログラムを、ホームページで公開しているファイル を展開して得られる英語 のテキストファイル( )に適用せよ。

【ヒント·コメント】

¯ 作成したプログラムを指定した三つのテキストファイルに適用するように指示しているが、

一部に適用した結果しかレポートに記載していないものや、異なるファイルに適用した結果 を載せているものがあった。演習課題の指示に従っていないという点で問題である。

¯ 「文字数」を数える際に、空白文字や改行文字を数えないようにしているプログラムがあっ た。これは、一つの工夫と考えられるが、通常「ファイルの中の文字数」と言った場合、空 白文字や改行文字も文字として数えるので、プログラム例に示すように、単純に 字入力するたびに「文字数」を数える変数を増やすだけで良い。

¯ 「行数」を数えるには、入力した文字が改行文字であれば、行数を数える変数を増やせば よい。

¯ 「行数」を数える変数をに初期化しているため、実際の行数よりも行多い結果を出力す るプログラムが見受けられる。「行数」を数える変数はに初期化すべきである。

¯ 文字数と行数を数える部分で

文字数を数える変数の値を増やす

行数を数える変数の値を増やす

のようにしているプログラムがあった。 関数は、呼び出されるたびに次の文字のコード を返すので、 ループの中で を呼び出すと、ループ回につき文字読み込む ことになる。したがって、このようなプログラムでは、

文字目を読み込み、それがでなければ文字数を数える変数の値を増やす

文字目を読み込み、それが改行文字なら行数を数える変数の値を増やす

文字目を読み込み、それがでなければ文字数を数える変数の値を増やす

文字目を読み込み、それが改行文字なら行数を数える変数の値を増やす

のようになるので正しくない。

正しく動かすためには、 関数で得られた値を変数に格納するなどして、ループ回につ 関数は回しか呼び出さないようにすれば良い。例えば、型の変数として、

(2)

ファイルから文字入力してに代入

それがで無い間以下を繰り返す 文字数を数える変数の値を増やす

が改行文字なら、行数を数える変数の値を増やす

以下を繰り返す

ファイルから文字入力してに代入

それがならループ終了 文字数を数える変数の値を増やす

が改行文字なら、行数を数える変数の値を増やす

のようにすれば良い。

¯ 正解と、よくある誤り例の結果を以下に示す。

正解 よくある誤り例 ファイル 文字数 行数 文字数 行数 

参照

関連したドキュメント

・COUNT, COUNTA, COUNTIF, COUNTIFS(件数をカウントする)

25 演習問題5

複数のスレッド(マルチスレッド)を安全に実行する(スレッドセーフにする)ためには、同期処理を用いる こ とが必要になる。同期処理は、予約語

関数 rectangle_s が呼び出される。main 文側の引数(実引数といいます。) width, height はそれぞれ関数 rectangle_s 側の引数 (仮引数といいます。) である w,

数字ではない = A1 + B1 という式を使ったが,A1 セルに数字ではなく 文字が入っていた #N/A 値が見つからない

10 3-3文字の途中から指定した文字数分抜き出す

yacc  注意点 •  yacc  は 字句解析をされた後のトークン を入力 とするので必ず字句解析ルーチンが必要.単 独では使えない

(4) BigIntSubLong( aString, bLong ) As String :  第 1 引き数として与えた大きな整数の文字 列と第 2 引き数として与えた Long 型整数値