Модель экспертной оценки

example;

help;

goto z;

end

else clrscr;

write('Введите количество кандидатов: ');

readln(M);

write('Введите количество избирателей: ');

readln(N);

writeln('Введите имена кандидатов');

for i:=1 to M do

begin

write('Кандидат ', и ': ');

readln(name[i]);

end;

writeln('Как будет осуществляться занос

информации?');

write('1- отдельн

ыми избирателями, 0- комитетом: ');

right;

if c='1' then

for i:=1 to N do

many[i]:=1;

clrscr; writeln('Введите профиль преимуществ');

s:=1; contrl:=0;

while contrl<>N do

begin

if c='1' then writeln('Избиратель ', s)

else writeln('Группа ', s);

for i:=1 to m do

n1[i]:='';

help;

for j:=1 to M do

begin

y:readln(vybor1);

{проверка на корректность введенного профиля}

r:=0; a:=0; b:=0;

n1[j]:=vybor1;

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

Результаты работы программы

n

Страница:  1  2  3  4  5  6  7  8  9 


Другие рефераты на тему «Экономико-математическое моделирование»:

Поиск рефератов

Последние рефераты раздела

Copyright © 2010-2024 - www.refsru.com - рефераты, курсовые и дипломные работы