Модель экспертной оценки
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
Результаты работы программы
Другие рефераты на тему «Экономико-математическое моделирование»:
Поиск рефератов
Последние рефераты раздела
- Выборочные исследования в эконометрике
- Временные характеристики и функция времени. Графическое представление частотных характеристик
- Автоматизированный априорный анализ статистической совокупности в среде MS Excel
- Биматричные игры. Поиск равновесных ситуаций
- Анализ рядов распределения
- Анализ состояния финансовых рынков на основе методов нелинейной динамики
- Безработица - основные определения и измерение. Потоки, запасы, утечки, инъекции в модели