【課題3-06】ファイルの入力
プロジェクトタイプ | C#コンソールアプリ※ |
---|---|
プロジェクト名 | Prac_3_06 |
ソリューション名 | PET3 |
ターゲットフレームワーク | .NET 6.0 (長期的なサポート) |
最上位レベルのステートメントを使用しない | 使用しない(チェックオン) |
※ 「コンソールアプリ(.NET Framework)」ではないので注意せよ!
一行に一つずつ実数が書かれているファイルを読み込み,
その数値と,その数値に0.5
を乗じた値を表示するプログラムを作成せよ.
ただし,この入力ファイルにはときどき数値として解釈できない文字列が書かれた行が含まれている. そのような行の場合は計算を行わずにそのまま表示すること.
注意
- この設問では,必ず後述するテキストファイルを読み込むようにプログラムを書くこと.
入力ファイルは以下をダウンロードして使用すること.これは_のような内容のファイルである. _に示す通り,この入力ファイルにはときどき数値として解釈できない文字列が書かれた行が含まれている. そのような行の場合は計算を行わずにそのまま表示すること. 同様の形式のどのような入力ファイルに対しても正しく動作するようにプログラムすること.

また,入力ファイルは上述のファイル名で作業ディレクトリの直下から読み込むこと(入力ファイル名を変更してはならない). 設定方法が分からない場合は準備作業 - 作業ディレクトリの変更を参考にすること.
行の内容が数値として解釈できる場合
行数
:その行に記載された数値
* 0.5 →計算結果
- 凡例
行数
- 読み込んだ行が何行目か(1開始).最初の行は「1行目」である.
:
- 文言.半角コロン + 半角スペース
その行に記載された数値
- 読み込んだ行に記載された数値をそのまま表示する.
* 0.5 →
- 文言.半角スペース + 半角アスタリスク + 半角スペース + 半角数字ゼロ + 半角ピリオド + 半角数字5 + 半角スペース + "→" + 半角スペース
計算結果
その行に記載された数値
に0.5を乗じた数値.
- 改行
行の内容が数値として解釈できない場合
行数
:行の内容
- 凡例
行数
- 読み込んだ行が何行目か(1開始).最初の行は「1行目」である.
:
- 文言.半角コロン + 半角スペース
行の内容
- 読み込んだ行の内容そのもの
- 改行
プログラムの概形は_のようにすること(必ず以下をコピーしProgram.cs
全体を上書きすること).
|
|
正しく実装できた場合,実行結果は_のようになる.
1: -28.61 * 0.5 → -14.305 2: 32.51 * 0.5 → 16.255 3: 14.36 * 0.5 → 7.18 4: apple 5: -25.14 * 0.5 → -12.57 6: -0.98 * 0.5 → -0.49 7: -13.2 * 0.5 → -6.6 8: banana 9: -5.71 * 0.5 → -2.855 10: 47.89 * 0.5 → 23.945 11: orange 12: 36.01 * 0.5 → 18.005 13: 28.87 * 0.5 → 14.435 14: melon 15: -26.88 * 0.5 → -13.44 16: peach 17: strawberry 18: -27.33 * 0.5 → -13.665 19: -6.68 * 0.5 → -3.34 20: -51 * 0.5 → -25.5 21: grape 22: 84.98 * 0.5 → 42.49 23: 34.85 * 0.5 → 17.425 24: kiwifruit 25: -25.16 * 0.5 → -12.58 26: lychee
準備作業 - 作業ディレクトリの変更
作ったプログラムの実行体は,デフォルトで以下の場所に作成される(_).
ソリューション名
\プロジェクト名
\bin\コンフィギュレーション名
\net6.0\プロジェクト名
.exe
例えばソリューションをC:\Users\
ユーザー名
\sources\repo
にConsoleApp1
(ソリューションも同名)という名前で
プロジェクトを作成した場合,デバッグモードでビルドすると実行体は以下の場所に作られる.
C:\Users\ユーザー名
\sources\repo\ConsoleApp1\ConsoleApp1\bin\Debug\net6.0\ConsoleApp1.exe
プログラムをデバッグ実行する際もこのフォルダを作業ディレクトリとして実行される. ただし,このフォルダは一度ビルドしないと作成されないので,読み込むファイルの場所を 固定しておきたい場合は不便である.
そのためプログラムをデバッグ実行する際の作業ディレクトリを別の場所に設定し,読み込むファイルは その場所に配置するとよい.たとえばプロジェクトフォルダをデバッグ実行時の作業ディレクトリにする. 具体的な手順は以下となる.
- 【手順】デバッグ時の作業ディレクトリの変更
- プロジェクトを作成する(_).
- ソリューションエクスプローラー上で,プロジェクト名を右クリックして「エクスプローラーでフォルダーを開く」をクリックする(_).
- 入力ファイルはこのプロジェクトフォルダの中に置いておく(_).
- 開いたフォルダのアドレスバーをクリックして選択状態にして,プロジェクトの場所(=プロジェクトフォルダのパス)をコピーする(_).
- ソリューションエクスプローラー上で,ソリューション名を右クリックして「プロパティ」をクリックする(_).
- 「デバッグ」→「全般」→「デバッグ起動プロファイルUIを開く 」をクリックする(_).
- 「作業ディレクトリ」に,3でコピーしたパスを貼り付けて保存する(_).
これでデバッグ時の作業ディレクトリの直下に読み込むファイルが配置されるので,
_のようにファイル名のみを指定することで,
ファイルを開くことができるようになる(以下は入力ファイル名がhoge.txt
である場合の例).

ヒント
- ファイルを1行ずつ読み込みながら,読み込んだ行の内容(文字列)を実数に変換する.
- 文字列を実数に変換するには
double.Parse()
メソッドを用いることもできるが,この設問のように解釈に失敗しうる文字列を扱う場合にはdouble.TryParse()メソッドを用いるとよい(double.Parse()
メソッドを用いる場合は例外処理が必要となる). - この設問ではファイルを読み込みながらその総行数もカウントする必要がある.それほど難しいことではないので方法は各自考えてみよう.
- 文字列を実数に変換するには
double.TryParse(文字列型の定数・変数・式
, outdouble型の変数
)
|
|
Apple社の都合により,iPhone,iPadなどのデバイスでは動画の再生はできません(Apple社はスマートフォン/タブレット製品で,意図的?にVPxやAV1コーデックのサポートを遅らせているため.参考1,参考2). ↩︎
Microsoft Edge で動画を閲覧するためには,AV1 Extensionをインストールする必要があります. ↩︎