2017-01-16 3 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. 

Was soll ich in '***' hier verwenden, um die Anzahl der Elemente in der Getränkeaufzählung in der Ausgabe zu erhalten? Ich habe sizeof() verwendet, aber es gibt den Byte-Wert vom Typ. Ich benutze Lazarus, fyi.Wie erhalten Sie die Anzahl der Elemente in einem Aufzählungstyp in Pascal?

Antwort

3

Succ(Ord(High(beverage))) sollte Ihnen die Anzahl der definierten Getränke geben.

+1

Es könnte gut sein, eine Warnung hinzufügen , dass das nur richtig ist, wenn die Werte wir re nicht gezwungen zu "springen", als ob die Aufzählung zum Beispiel "Milch = 7" gehabt hätte. –

2

können Sie verwenden ORD und HIGH-LOW Funktion:

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

Codes:

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. 

Ergebnis:

Which drink do you want? 
You have 6 choices 
Verwandte Themen