2014年3月12日水曜日

開発環境

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

その他参考書籍

実習 12-3.

コード(BBEdit, Emacs)

sample211_3.cpp

#include <iostream>
#include <string>

struct ticket {
  std::string flight_number;
  char code_departure[3];
  char code_arrival[3];
  std::string time_departure;
  std::string time_arrival;
};

int main()
{
  std::string time1 = "10:00";
  std::string time2 = "12:00";

  struct ticket ticket1 = {
    "1",
    {'a', 'b', 'c'},
    {'d', 'e', 'f'},
    time1,
    time2
  };
  struct ticket ticket2 = {
    "2",
    {'a', 'b', 'c'},
    {'g', 'h', 'i'},
    time1,
    time2
  };
  struct ticket ticket3 = {
    "3",
    {'d', 'e', 'f'},
    {'a', 'b', 'c'},
    time1,
    time2
  };
  struct ticket ticket4 = {
    "4",
    {'d', 'e', 'f'},
    {'g', 'h', 'i'},
    time1,
    time2
  };
  struct ticket ticket5 = {
    "5",
    {'g', 'h', 'i'},
    {'a', 'b', 'c'},
    time1,
    time2
  };
  struct ticket ticket6 = {
    "6",
    {'g', 'h', 'i'},
    {'d', 'e', 'f'},
    time1,
    time2
  };
  struct ticket tickets[] = {ticket1, ticket2, ticket3, ticket4, ticket5,
                             ticket6};
  int i;
  int j;
  
  // 2つの空港を指定
  char airport1[3] = {'a', 'b', 'c'};
  char airport2[3] = {'d', 'e', 'f'};

  // 指定された2つの空港から出発する全ての便の便名を出力
  for (i = 0; i < 6; ++i) {
    for (j = 0; j < 3; ++j) {
      if (tickets[i].code_departure[j] != airport1[j]) {
        break;
      }
    }
    if (j == 3) {
      std::cout << tickets[i].flight_number << '\n';
      continue;
    }
    for (j = 0; j < 3; ++j) {
      if (tickets[i].code_departure[j] != airport2[j]) {
        break;
      }
    }
    if (j == 3) {
      std::cout << tickets[i].flight_number << '\n';
    }
  }

  return (0);
}

Makefile

#
# FSFのg++コンパイラ用のMakefile
#
CC=g++
CFLAGS=-g -Wall
all: sample211_3

sample211_3: sample211_3.cpp
 ${CC} ${CFLAGS} -o sample211_3 sample211_3.cpp

clean:
 rm sample211_3

入出力結果(Terminal)

$ make && ./sample211_3
g++ -g -Wall -o sample211_3 sample211_3.cpp
1
2
3
4
$

0 コメント:

コメントを投稿