4/21 イントロダクション(Introduction)(3), 配列ベースのリスト(Array-Based Lists)(1)


質問と回答

Q.
自分のMacを持ってきて課題をやろうとしたが,自分のMacにはg++-mp-4.9 というコマンドがない.
A.
g++-mp-4.9というのは,GNU Compiler Collectionのバージョン 4.9 に含まれるC++コンパイラをパッケージシステムMacPortsを使ってインストールした時のコマンド名になります.バージョンの違いによる影響を抑えるために,講義ではこのバージョンで説明していますが,多くの場合はXcode に含まれる標準のC++コンパイラ(g++ という名前ですが,中身はLLVM ProjectのClang)でも問題ないので,g++と読み替えても構いません.
Q.
教育用計算機システムを久しぶりに使ったら,「キーチェーンのロック解除」というダイアログが頻繁に表れてうっとおしい.
A.
教育用計算機システムのページの「問い合わせ」->「よくある質問」をたどるとパスワードを変更したら「キーチェーンのロック解除」が出るようになったに対処法が書かれています.古いパスワードを忘れていることが多いと思うので,その場合はページの一番下の「古いパスワードを忘れてしまった場合は,キーチェーンを削除して作り直す」の説明に従って下さい.
Q.
getlineの戻り値が良く分からなかった.
A.
C++ Referenceでgetlineを検索するとstd::getline(string)の説明にあるように,istream型のオブジェクト(引数として渡したストリームと同一)の参照を返します.ifの条件でこれを使うと,operator boolによって,bool型の値(true or false)に変換されるのですが,ファイルの終端 EOF(end of file) まで来たのにgetlineを呼んだ後のcinをbool方に変換するとfalseになります.それにより,ファイルの終端を判別できます.なお,
  for (string line; getline(cin, line); ){
    lines.push_back(line);
  }
の代わりに,istreamのEOFをチェックするメンバ関数eofを明示的に呼び出して,
  for (string line; getline(cin, line), !cin.eof(); ){
    lines.push_back(line);
  }
と書いても同じです(EOF以外のエラーでgetlineが終了した時にループを抜けられないことを除いて).

前回の課題について


講義

今日の講義は教科書の1.3.4 Randomization and Probabilityから.

投票システム

vote.rbをダウンロードして(「リンク先のファイルを別名で保存」で,ホームフォルダの下のmis2を選択(なければ作る).".txt"を「追加しない」を選ぶ),ホームディレクトリに保存します.ドックからターミナルを起動して,
cd mis2
を済ませてから,
ruby vote.rb 選択肢番号
のように使います.
1回の講義中に1度でも投票すると出席点を加えます.1回の講義の出席点は全体の評 価の(1/100以下とします)

リンク集


演習

今回の課題