開発環境
- OS X Mavericks - Apple(OS)
- Emacs (CUI)、BBEdit - Bare Bones Software, Inc. (GUI) (Text Editor)
- C++ (プログラミング言語)
- g++(コンパイラ)
C++実践プログラミング (スティーブ オウアルライン (著)、Steve Oualline (原著)、Steve Oualline(原著)、望月 康司(翻訳)、クイープ(翻訳) 、オライリー・ジャパン)のⅢ部(高度な型とクラス)の14章(クラス - その2)、14.7(プログラミング実習)、実習 14-4.を解いてみる。
その他参考書籍
- C++プログラミング入門 (グレゴリー サティア (著)、ダウグ ブラウン (著)、Gregory Satir (原著)、Doug Brown (原著)、望月 康司 (翻訳)、谷口 功 (翻訳)、オライリージャパン)
実習 14-4.
コード(BBEdit, Emacs)
sample244_4.cpp
#include <iostream> const int SIZE = 10000; class line_number { private: static int class_id; static int list[SIZE]; int id; int current_line; long int char_pos; public: explicit line_number() { id = class_id; list[id] = 0; ++class_id; } // line_number(const line_number& old_line_number) // ~line_number() // operator = (const line_number& old_line_number) void goto_line(int line); int get_current_line(); long int get_char_pos(); char get_char(); }; int line_number::class_id = 0; int line_number::list[] = {}; inline void line_number::goto_line(int line) { int i = 0; int m = line; for (i = 0; i < class_id; ++i) { int t = line - list[i]; if (t > 0 && t < m) { m = t; } } while (m != 0) { while (get_char() != '\n') ; char_pos = 0; ++m; } current_line = line; } inline int line_number:: get_current_line() { return current_line; } inline long int line_number::get_char_pos() { return char_pos; } inline char line_number::get_char() { ++char_pos; return 'a'; } // とりあえずここまでの感じでいいのかな。 int main() { return (0); }
Makefile
# # FSFのg++コンパイラ用のMakefile # CC=g++ CFLAGS=-g -Wall all: sample244_4 sample244_4: sample244_4.cpp ${CC} ${CFLAGS} -o sample244_4 sample244_4.cpp clean: rm sample244_4
入出力結果(Terminal)
$ make g++ -g -Wall -o sample244_4 sample244_4.cpp $
0 コメント:
コメントを投稿