for l:=1 to M do
begin
if vybor1=name[l] then
begin
b:=1;
for a:=1 to M do
{такое имя уже было введено в данном профиле}
if (vybor1=n1[a]) and ((a-j)<>0) then r:=1;
end;
{имя введенного кандидата не совпадает с ни одним из списка}
if (vybor1<>name[l]) and (l=M) and
(b<>1) then r:=1;
end;
if r=1 then
begin
n1[j]:='';
writeln('Внимательно вводите имена кандидатов');
goto в;
end
else rang[j,s]:=vybor1; {профилькорректен}
end;
if c='0' then
begin
writeln('Количество избирателей в
группе ', s);
readln(many[s]);
contrl:=contrl+many[s];
end
else
contrl:=contrl+1;
s:=s+1;
clrscr;
end; {while}
{Определение оценок Копленда}
z: contrl:=1;
while contrl<=M do
begin
k:=contrl+1;
vybor1:=name[contrl]; vybor2:=name[k];
while k<=M do
begin
i:=1; a:=0; b:=0;
while i<=s do
begin
for j:=1 to M do
if rang[j,i]=vybor1 then l:=j
else
if rang[j,i]=vybor2 then r:=j;
if l<r then a:=a+many[i]
else
if l>r then b:=b+many[i];
i:=i+1;
end;
if a>b then
begin
kopl[contrl]:=kopl[contrl]+1;
kopl[k]:=kopl[k]-1;
end
else
if a<b then
begin
kopl[k]:=kopl[k]+1;
kopl[contrl]:=kopl[contrl]-1;
end;
k:=k+1;
vybor2:=name[k];
end; {while пок}
contrl:=contrl+1;
end; {whileпо contrl}
{определение оценок Борда}
for i:=1 to s do
for j:=1 to M do
begin
for k:=1 to M do
if rang[j,i]=name[k] then r:=k;
bord[r]:=many[i]*(M-j)+bord[r];
end;
victory(kopl, 'Коплендом');
writeln ('Нажмителюбуюклавишу
'); readkey; writeln;
victory(bord, 'Борда');
end.
Результаты работы программы
Самостоятельное внесение профиля.
Введите количество кандидатов: 5
Введите количество избирателей: 9
Введите имена кандидатов
Кандидат 1: а
Кандидат 2: b
Кандидат 3: c
Кандидат 4: d
Кандидат 5: е
Как будет осуществляться занос
информации?
1-отдельными избирателями, 0 –
комитетом: 0
Введите профиль преимуществ
Группа 1
a
b
c
d
e
Количество избирателей в группе 1: 1
Группа 2
c
d
b
e
a
Количество избирателей в группе 2: 4
Группа 3
e
a
d
b
c
Количество избирателей в группе 3: 1
Группа 4
e
a
b
d
c
Количество избирателей в группе 4: 3
Победитель по Копленду с сохранением нейтральности – а
Сумма очков – 2
Победитель по Борду с сохранением нейтральности – е
Сумма очков – 20
Результаты работы программы