2013年11月23日土曜日

開発環境

C実践プログラミング 第3版 (Steve Oualline (著)、 望月 康司 (監訳) (翻訳)、谷口 功 (翻訳)、オライリー・ジャパン)のⅡ部(単純なプログラミング)の12章(高度な型)、12.1(構造体)、12.2(共用体)、12.3(typedef)、12.4(enum型)、12.5(キャスト)、12.6(ビットフィールドまたは構造体の圧縮)、12.7(構造体配列)、12.9(プログラミング実習)、実習12-4を解いてみる。

その他参考書籍

実習12-4.

コード

sample.c

#include <stdio.h>
#include <string.h>

struct ticket{
    char flight[100];
    char from[4];
    char to[4];
    struct {
        int hour;
        int minute;
    } start;
    struct {
        int hour;
        int minute;
    } arrive;
};

int main()
{
    struct ticket tickets[10] = {
        {"a", "fgh", "ijk", {10, 20}, {14, 30}},
        {"b", "ijk", "fgh", {11, 20}, {15, 30}},
        {"c", "fgh", "ijk", {10, 20}, {14, 30}},
        {"d", "fgh", "ijk", {11, 20}, {15, 30}},
        {"e", "ijk", "fgh", {12, 20}, {16, 30}},
        {"f", "ijk", "fgh", {12, 20}, {16, 30}},
        {"g", "fgh", "ijk", {13, 20}, {17, 30}},
        {"h", "fgh", "ijk", {13, 20}, {17, 30}},
        {"i", "fgh", "ijk", {14, 20}, {18, 30}},
        {"j", "ijk", "fgh", {14, 20}, {18, 30}}
    };
    void display(struct ticket t);
    int i;
    char line[100];
    printf("出発空港コードを入力: ");
    fgets(line, sizeof(line), stdin);
    line[strlen(line) - 1] = '\0';
    printf("便のリスト\n");
    for (i = 0; i < 10; i += 1){
        if (strcmp(line, tickets[i].from) == 0){
            display(tickets[i]);
        }
    }
    return (0);
}

void display(struct ticket t)
{
    printf("便名: %s\n出発空港コード: %s\n到着空港コード: %s\n",
        t.flight, t.from, t.to);
    printf("出発時刻: %d:%d\n到着時刻: %d:%d\n",
        t.start.hour, t.start.minute, t.arrive.hour, t.arrive.minute);
}

makefile

CC=cc
CFLAGS=-g

sample: sample.c
 $(CC) $(CFLAGS) -o sample sample.c

clean:
 rm -f sample

入出力結果(Terminal)

$ make
cc -g -o sample sample.c
$ ./sample
出発空港コードを入力: fgh
便のリスト
便名: a
出発空港コード: fgh
到着空港コード: ijk
出発時刻: 10:20
到着時刻: 14:30
便名: c
出発空港コード: fgh
到着空港コード: ijk
出発時刻: 10:20
到着時刻: 14:30
便名: d
出発空港コード: fgh
到着空港コード: ijk
出発時刻: 11:20
到着時刻: 15:30
便名: g
出発空港コード: fgh
到着空港コード: ijk
出発時刻: 13:20
到着時刻: 17:30
便名: h
出発空港コード: fgh
到着空港コード: ijk
出発時刻: 13:20
到着時刻: 17:30
便名: i
出発空港コード: fgh
到着空港コード: ijk
出発時刻: 14:20
到着時刻: 18:30
$ ./sample
出発空港コードを入力: ijk
便のリスト
便名: b
出発空港コード: ijk
到着空港コード: fgh
出発時刻: 11:20
到着時刻: 15:30
便名: e
出発空港コード: ijk
到着空港コード: fgh
出発時刻: 12:20
到着時刻: 16:30
便名: f
出発空港コード: ijk
到着空港コード: fgh
出発時刻: 12:20
到着時刻: 16:30
便名: j
出発空港コード: ijk
到着空港コード: fgh
出発時刻: 14:20
到着時刻: 18:30
$ ./sample
出発空港コードを入力: abc
便のリスト
$

0 コメント:

コメントを投稿