2018年2月9日金曜日

開発環境

Head First C ―頭とからだで覚えるCの基本 (David Griffiths (著)、Dawn Griffiths (著)、中田 秀基 (監修)、木下 哲也 (翻訳)、オライリージャパン)の5章(構造体、共用体、ビットフィールド - 独自の構造を使う)、コードマグネット(p. 256)を取り組んでみる。

コードマグネット(p. 256)

//
//  main.c
//  sample1
//
//  Created by kamimura on 2018/02/03.
//  Copyright © 2018 kamimura. All rights reserved.
//

#include <stdio.h>

typedef enum {
    COUNT, POUNDS, PINTS
} unit_of_measure;

typedef union {
    short count;
    float weight;
    float volume;
} Quantity;

typedef struct {
    char * const name;
    char * const country;
    Quantity amount;
    unit_of_measure units;
} FruitOrder;

void display(FruitOrder order) {
    printf("この注文に含まれるものは");
    switch (order.units) {
        case COUNT:
            printf("%i個の%sです。\n",
                   order.amount.count, order.name);
            break;
        case POUNDS:
            printf("%2.2fポンドの%sです。\n",
                   order.amount.weight, order.name);
            break;
        case PINTS:
            printf("%2.2fパイントの%sです。\n",
                   order.amount.volume, order.name);
            break;
        default:
            break;
    }
}

int main() {
    FruitOrder appples = {"リンゴ", "イギリス", .amount.count=144, COUNT};
    FruitOrder strawberries = {"いちご", "スペイン", .amount.weight=17.6, POUNDS};
    FruitOrder oj = {"オレンジジュース", "アメリカ", .amount.volume = 10.5, PINTS};
    
    display(appples);
    display(strawberries);
    display(oj);
    
    return 0;
}

入出力結果(Terminal)

この注文に含まれるものは144個のリンゴです。
この注文に含まれるものは17.60ポンドのいちごです。
この注文に含まれるものは10.50パイントのオレンジジュースです。
Program ended with exit code: 0

0 コメント:

コメントを投稿