Code: Select all
MODULE MeasureMajorityRule;
TYPE
String = POINTER TO ARRAY OF CHAR;
Measure* = String;
VotingMember = POINTER TO EXTENSIBLE RECORD
name: String;
next: VotingMember
END;
VAR
N: INTEGER; (*number of center members with voting rights*)
votingMembers: VotingMember;
(*
*)
PROCEDURE (vm: VotingMember) VoteFor (m: Measure): BOOLEAN, NEW, EXTENSIBLE;
BEGIN
RETURN FALSE
END VoteFor;
PROCEDURE MajorityRule* (m: Measure): BOOLEAN;
VAR n: INTEGER; pass: BOOLEAN; vm: VotingMember;
BEGIN
vm := votingMembers;
n := 0;
WHILE vm # NIL DO
IF vm.VoteFor(m) THEN INC(n) END;
vm := vm.next
END;
pass := (N/2 <= n); (*MajorityRule*)
RETURN pass
END MajorityRule;
PROCEDURE Populate ;
BEGIN
(*the votingMembers list*)
(*N:=LEN(votingMembers)*)
END Populate;
BEGIN
Populate;
END MeasureMajorityRule.