プロが教える店舗&オフィスのセキュリティ対策術

Pascalの可変レコード型のプログラムをC言語で表現したいのですが
調べた所、共用体(Union)を使えばよいと見つけました。

しかし、どのように対応すればいいのかよく理解ができず困っています。

以下のプログラムをC言語で表現すると、どのようになるのか
ご教授していただけないでしょうか。よろしくお願いします。



type Person =
record name,firstname: alfa;

birthdate: Date;
marstatus: (single,married,widowed,divorced);

case sex: (male,female) of

male: (weight: real;
  bearded: Boolean);
female: (size: array[1...3] of integer)

end

A 回答 (4件)

Cの共用体にはPascalの可変レコードで使われるようなタグはありません。


また一部の処理系を除いては無名の構造体も使えないので、

enum MAR_STATUS {single, marrired, widowed, divorced};

struct m {
double weight;
bool bearded;
};

struct f {
int size[3];
}

strcut Person {
alpha name;
alpha firstname;
Date birthdate;
enum MAR_STATUS marstatus;
union sex {
struct m m;
struct f f:
}
};


こんな感じ? (試していません)
sex の femaleは直接かけなくもないけどそろえる意味で構造体に仕立てました。
alphaが具体的にどういう構造なのかも気になるけどそのままにしています。

あと
教授→教示
#今日何回目だ…
    • good
    • 0
この回答へのお礼

丁寧な回答ありがとうございます。
Cの共用体にはPascalの可変レコードで使われるようなタグはなかったのですか・・・。
ずっと悩んでいたのですっきりしました。


>教授→教示
すみません、間違った使い方をしていました。
次から気をつけたいと思います。ご指摘ありがとうございました。

お礼日時:2007/04/28 04:55

>ご教授していただけないでしょうか。

よろしくお願いします。
>あと
>教授→教示
本件とは、直接ないが、
「ご教授していただけないでしょうか」は、正しい日本語であると思われます。
以下、大辞林からの、引用
----------------------------------------------
きょうじゅ けう― 【教授】


(名)スル
(1)0 1 (ア)児童・生徒に知識・技能を与え、そこからさらに知識への興味を呼び起こすこと。
(イ)専門的な学問・技芸を教えること。
「国文学を―する」「書道―」
(2)0 大学などの高等教育機関において、専門の学問・技能を教え、また自らは研究に従事する人の職名。助教授・講師の上位。
--------------------------------------------
本件、上記(1)の(イ)の使い方に該当すると考えます。
    • good
    • 0

Googleで「ご教授ください」とか「ご教授」で検索して上位のものをいくつか見てくださいな。


人や時間帯によっても変わるでしょうが

誤字等の館:ご教授願います
http://www.tt.rim.or.jp/~rudyard/torii009.html
「ご教授」と「ご教示」
http://blogs.wankuma.com/jeanne/archive/2005/11/ …
教授とは - はてなダイアリー
http://d.hatena.ne.jp/keyword/%B6%B5%BC%F8

この辺が見つかるでしょう。
「おしえる」という意味ではどちらも変わりませんが、霧雨と驟雨が
どちらも雨ではあるのに違うものを指しているのと同じことです。
定着しつつある誤用かもしれませんけど、冗談抜きに本来の意味でこういうところで
「教授」を要求されたらわたしは引きますね。
    • good
    • 0

>「おしえる」という意味ではどちらも変わりませんが、霧雨と驟雨が


>どちらも雨ではあるのに違うものを指しているのと同じことです。
>定着しつつある誤用かもしれませんけど、冗談抜きに本来の意味でこういう>ところで「教授」を要求されたらわたしは引きますね。
なるほど、教えて!gooでの回答は、「専門的な学問・技芸を教えること。」に該当しないということですね。了解しました。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!