2017-01-16 75 views
1
program 
    Enumeration; 
uses 
    crt; 
type 
    beverage = (coffee, tea, milk, water, coke, limejuice); 
var 
    drink:beverage; 
begin`enter code here` 
    writeln('Which drink do you want?'); 
    writeln('You have ', *** , ' choices'); 
    readkey; 
end. 

我应该在'***'中使用什么来获取输出中饮料枚举类型的元素数量? 我使用sizeof(),但它给出了类型的字节值。 我正在使用lazarus,fyi。如何获取Pascal中枚举类型的项目数?

回答

3

Succ(Ord(High(beverage)))应该给你定义饮料的数量。

+1

这可能是很好的补充警告,这只有在我们的价值观是正确的不要强迫“跳跃”,就像枚举例如有'牛奶= 7'一样。 –

2

您可以使用ORDHIGH-LOW功能:

ord(high(beverage)) - ord(low(beverage)) + 1 

代码:

program 
    Enumeration; 
uses 
    crt; 
type 
    beverage = (coffee, tea, milk, water, coke, limejuice); 
var 
    drink:beverage; 
begin`enter code here` 
    writeln('Which drink do you want?'); 
    writeln('You have ', ord(high(beverage))-ord(low(beverage))+1 , ' choices'); 
    readkey; 
end. 

结果:

Which drink do you want? 
You have 6 choices