2014年3月21日金曜日

開発環境

C++実践プログラミング (スティーブ オウアルライン (著)、Steve Oualline (原著)、Steve Oualline(原著)、望月 康司(翻訳)、クイープ(翻訳) 、オライリー・ジャパン)のⅢ部(高度な型とクラス)の14章(クラス - その2)、14.7(プログラミング実習)、実習 14-4.を解いてみる。

その他参考書籍

実習 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 コメント:

コメントを投稿