選ばれた動物の鳴き声を表示 (列挙体)

明解C言語 入門編 > 8. いろいろなプログラムを作ってみよう >

選ばれた動物の鳴き声を表示 (列挙体)

C


#include <stdio.h>

enum animal
{
Dog
, Cat
, Monkey
, Invalid
};
void dog(void)
{
puts("ワンワン!!");
}
void cat(void)
{
puts("ニャ〜オ!!");
}
void monkey(void)
{
puts("キッキッ!!");
}
enum animal select(void)
{
int tmp;
do
{
printf("0…犬 1…猫 2…猿 3…終了");
scanf("%d", &tmp);
} while (tmp < Dog || tmp > Invalid);

return (enum animal)tmp;
}
int main(int argc, char* argv[])
{
enum animal selected;

do
{
switch (selected = select())
{
case Dog: dog(); break;
case Cat: cat(); break;
case Monkey: monkey(); break;
}
} while (selected < Invalid);

return 0;
}

実行結果


R:\>lesson062\Project1.exe
0…犬 1…猫 2…猿 3…終了0
ワンワン!!
0…犬 1…猫 2…猿 3…終了1
ニャ〜オ!!
0…犬 1…猫 2…猿 3…終了2
キッキッ!!
0…犬 1…猫 2…猿 3…終了9
0…犬 1…猫 2…猿 3…終了3

C++


#include <stdio.h>

enum animal
{
Dog
, Cat
, Monkey
, Invalid
};
void dog(void)
{
puts("ワンワン!!");
}
void cat(void)
{
puts("ニャ〜オ!!");
}
void monkey(void)
{
puts("キッキッ!!");
}
animal select(void)
{
int tmp;
do
{
printf("0…犬 1…猫 2…猿 3…終了");
scanf("%d", &tmp);
} while (tmp < Dog || tmp > Invalid);

return animal(tmp);
}
int main(int argc, char* argv[])
{
animal selected;

do
{
switch (selected = select())
{
case Dog: dog(); break;
case Cat: cat(); break;
case Monkey: monkey(); break;
}
} while (selected < Invalid);

return 0;
}

実行結果


T:\>lesson062\Project1.exe
0…犬 1…猫 2…猿 3…終了0
ワンワン!!
0…犬 1…猫 2…猿 3…終了1
ニャ〜オ!!
0…犬 1…猫 2…猿 3…終了2
キッキッ!!
0…犬 1…猫 2…猿 3…終了9
0…犬 1…猫 2…猿 3…終了3

Delphi


program Project1;

{$APPTYPE CONSOLE}

uses
SysUtils;

type
TAnimal =
(
Dog
, Cat
, Monkey
, Invalid
);

procedure dog();
begin
writeln('ワンワン!!');
end;

procedure cat();
begin
writeln('ニャ〜オ!!');
end;

procedure monkey();
begin
writeln('キッキッ!!');
end;

function select():TAnimal;
var
tmp: Integer;
begin
repeat
write('0…犬 1…猫 2…猿 3…終了');
read(tmp);
until (Integer(Dog) <= tmp) and (tmp <= Integer(Invalid));

result := TAnimal(tmp);
end;

procedure main();
var
selected: TAnimal;
begin
repeat
selected := select;
case selected of
Dog: dog;
Cat: cat;
Monkey: monkey;
end;
until (selected >= Invalid);
end;

begin
main;
end.

実行結果


S:\>lesson062\Project1.exe
0…犬 1…猫 2…猿 3…終了0
ワンワン!!
0…犬 1…猫 2…猿 3…終了1
ニャ〜オ!!
0…犬 1…猫 2…猿 3…終了2
キッキッ!!
0…犬 1…猫 2…猿 3…終了9
0…犬 1…猫 2…猿 3…終了3