課題1(4/22出題)
課題
行単位での入力は,stringに対してgetlineで読み込むのが楽です.例として行を読み込んでvectorに貯めて,ファイルの最後まで読み込んだら出力するだけのC++プログラム0.ccを紹介します.
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int main(){
vector<string> lines;
for (string line; getline(cin, line); ){
lines.push_back(line);
}
for (size_t i = 0; i < lines.size(); ++i){
cout << lines[i] << endl;
}
}
出力例
チェック用に,テスト用の入力sample.txtと1-9の出力例を示します(9は乱数を使うので,
答えが一致している必要はありません).1-8の出力例に誤りを見つけたら指摘す
ると評価が高くなります.
たとえば,サンプルのプログラム 0.cc の場合は,
g++-mp-4.8 -std=c++11 -o 0 0.cc
としてコンパイルして,作成された実行ファイル(Mac環境では 0 )を
./0 < sample.txt > 0.out
として実行すると,ファイル 0.out が作られる.
diff 0.out 0.txt
を実行して出力例と一致していることを確認する.
ヒント
STLのうちの以下のデータ構造を用いる(リンク先は http://www.cpluscplus.com )と良いでしょう.
提出方法
作成したすべてのプログラムと,各プログラムに関する簡単な説明をまとめた
プレインテキスト形式(テキストエディタで編集可能な形式)またはPDF形式の
ファイルを1つ作成して,ITC-LMSの「課題1(4/22出題)」(4/22の講義時間中に公開される予定)に提出してください.
2問解けない場合は1問でも提出して構いません.
オプション課題
課題だけで物足りない人は,以下のオプション課題にも取り組んでください.
- 同じ問題を別のデータ構造を使うプログラムに書き換えてみて,
前回(4/15)の講義の「演習(C++プログラムの速度計測)」を使って,速度計測をおこない違いを見る.
- 第1章の他の練習問題(Exercise 1.2-7)に取り組む