2012年5月8日火曜日

開発環境

『実践プログラミング 第3版』 (Steve Oualline (著)、 望月 康司 (監修) (翻訳)、 谷口 功 (翻訳)、 オライリー・ジャパン、1998年、ISBN978-4900900646) の12章(高度な型)12.9(プログラミング実習)j実習12-4.を解いてみる。

実習12-4.

コード(TextWrangler)

#include <stdio.h>

struct ticket{
  char name[10];
  unsigned int airport1;
  unsigned int airport2;
  char date1[6];
  char date2[6];
};

void f(struct ticket t){
  printf("便名: %s\n",t.name);
  printf("出発空港コード: %u\n",t.airport1);
  printf("到着空港コード: %u\n",t.airport2);
  printf("出発時刻: %s\n",t.date1);
  printf("到着時刻: %s\n",t.date2);
}

int main(){
  struct ticket list[10];
  char line[10];
  unsigned int a,b;
  int i;
  struct ticket t1 = {
    "便名1",
    1,
    20,
    "09:00",
    "12:00"
  };
  struct ticket t2 = {
    "便名2",
    3,
    40,
    "10:00",
    "13:00"
  };
  struct ticket t3 = {
    "便名3",
    5,
    60,
    "11:00",
    "14:00"
  };
  struct ticket t4 = {
    "便名4",
    20,
    1,
    "11:00",
    "14:00",
  };
  struct ticket t5 = {
    "便名5",
    40,
    3,
    "14:00",
    "16:00",
  };
  list[0] = t1;
  list[1] = t2;
  list[2] = t3;
  list[3] = t4;
  list[4] = t5;
  printf("2つの空港コードを入力: ");
  fgets(line,sizeof(line),stdin);
  sscanf(line, "%u %u", &a,&b);
  for( i = 0 ; i < 5 ; i++){
    if(list[i].airport1 == a ||
       list[i].airport1 == b){
      f(list[i]);
      printf("\n");
    }
  }
  return (0);
}

入出力結果(Terminal)

$ cc -g -o sample sample.c
$ ./sample
2つの空港コードを入力: 1 20
便名: 便名1
出発空港コード: 1
到着空港コード: 20
出発時刻: 09:00
到着時刻: 12:00

便名: 便名4
出発空港コード: 20
到着空港コード: 1
出発時刻: 11:00
到着時刻: 14:00

$ ./sample
2つの空港コードを入力: 3 4
便名: 便名2
出発空港コード: 3
到着空港コード: 40
出発時刻: 10:00
到着時刻: 13:00

$ ./sample
2つの空港コードを入力: 5 40
便名: 便名3
出発空港コード: 5
到着空港コード: 60
出発時刻: 11:00
到着時刻: 14:00

便名: 便名5
出発空港コード: 40
到着空港コード: 3
出発時刻: 14:00
到着時刻: 16:00

$

久々に標準入出力もあったけど、こんな感じでいいのかな。。

0 コメント:

コメントを投稿