開発環境
- 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 コメント:
コメントを投稿