Реферат - Текст програми експертного вибору
Химия

Реферат — Текст програми експертного вибору


#include

#include

#include

int i,j,e,n,m,p,command;

double

y=0.0,d[30][30],k[30][30],s[30]w[30],l[30],z[30],a[30],b[30],h[30];

FILE* base;

FILE* name;

FILE* wazh;

struct name

{

char pname[50];

} nm[30];

struct krit

{

char pname[50];

} kr[30];

double power(double num, int st) // функція зведення в ступінь

{

double num1 = 1;

for (int gggggg=1;gggggg<=st;gggggg++)

num1 * = num;

return num1;

}

void main(void)

{

printf (» nnnnn Copyright 1994 by Dan.V.Puzanov & Anton A.Mets n All rights reservedn»);

printf («Special thanks Dmitry A.Davidenkon»);

printf («nnnn Визначення кращого пакету методом зміщеного ідеалуnnnnnnnn»);

printf («Натисніть будь-яку клавішу»);

getch();

printf («nnnnnnnnnnnnnnnnnnn nnnnДані про пакети вводити з файлу? [y/n]: «);

command = getch ();

if (command==’y’ || command==’Y’)

{

name=fopen(«name.dat», «rb»); // читання даних про пакети з

if (name==NULL) return;

fread (&n,sizeof(n),1,name); // файлу name.dat

fread (&nm,sizeof(nm),1,name);

fread (&m,sizeof(m),1,name);

fread (&kr,sizeof(kr),1,name);

fread (&a,sizeof(a),1,name);

fread (&b,sizeof(b),1,name);

fclose(name);

}

else

{ // Введення даних про пакети вручну

printf («nВведіть кількість пакетів: «);

scanf («%d»,&n);

for (i=1;i<=n;i++)

{

printf («nВведіть назву %d-го пакета: «,i);

scanf («%s»,nm[i].pname);

}

printf («nВведіть кількість критеріїв оцінки: «);

scanf («%d»,&m);

for (j=1;j<=m;j++)

{

printf («nВведіть назву %d-го критерію: «,j);

scanf («%s»,kr[j].pname);

}

for (j=1;j<=m;j++)

{

printf («nВведіть ідеальне значення для критерію ~%s~: «,kr[j].pname);

scanf («%le»,&a[j]);

printf («nВведіть найгірше значення для критерію ~%s~: «,kr[j].pname);

scanf («%le»,&b[j]);

};

printf («nЗберегти введені дані про пакети у файлі?»[y/n] «);

command = getch ();

if (command==’y’ || command==’Y’)

{

name=fopen(«name.dat», «wb»);

if (name==NULL) return;

if(fwrite (&n,sizeof(n),1,name) == 0) return;

fwrite (&nm,sizeof(nm),1,name); // запис даних про

fwrite (&m,sizeof(m),1,name); // пакетах

fwrite (&kr,sizeof(kr),1,name); // в файл name.dat

fwrite (&a,sizeof(a),1,name);

fwrite (&b,sizeof(b),1,name);

fclose(name);

};

}; // кінець else

printf(«n Введення значень критеріїв із файлу ? [y/n]: «);

command = getch ();

if (command==’y’ || command== ‘Y’)

{

base=fopen(«base.dat», «rb»);

if (base==NULL) return;

fread (&k,sizeof(k),1,base); // читання значень критеріїв

fread (&d,sizeof(d),1,base);

fclose(base); // з файлу base.dat

}

else

{

for (i=1;i<=n;i++) // Введення значень критеріїв вручну

for (j=1;j<=m;j++)

{printf («n Введіть значення критерію ~%s~n для пакета ~%s~: «,kr[j].pname,nm[i].pname);

scanf («%le»,&k[i][j]);

d[i][j]=(a[j]-k[i][j])/(a[j]b[j]); // Обчислення нормованих критеріїв

};

printf («nЗберегти введені дані про критерії у файлі?» [y/n]: «);

command = getch ();

if (command==’y’ || command==’Y’)

{

base=fopen(«base.dat», «wb»);

if (base==NULL) return; // запис значень критеріїв

fwrite (&k,sizeof(k),1,base); // в файл base.dat

fwrite (&d,sizeof(d),1,base);

fclose(base);

};

}; //кінець else

printf («nВведення значень відносної важливості з файлу?» [y/n]»);

command = getch ();

if (command==’y’ || command== ‘Y’)

{

wazh=fopen(«wazh.dat», «rb»);

if (wazh==NULL) return;

fread (&w,sizeof(w),1,wazh); // читання значень

fclose(base); // важливості критеріїв

} / /з файлу wazh.dat

else

{

for (j=1;j<=m;j++)

{

printf («nВведіть значення відносної важливості критерію ~%s~: «,kr[j].pname);

scanf («%le»,&w[j]); // Введення значень відносної важливості критеріїв

};

printf («nЗберегти значення відносної важливості у файлі?»[y/n]»);

command = getch ();

if (command==’y’ || command==’Y’)

{

wazh=fopen(«wazh.dat», «wb»); // запис значень

if (wazh==NULL) return; // відносної важливості

fwrite (&w,sizeof(w),1,wazh); // критеріїв у файл

fclose(wazh); //wazh.dat

};

}; // end of else

for (j=1;j<=m;j++)

{

s[j]=0.0;

for (i=1;i<=n;i++)

{

if (d[i][j]==0.0) d[i][j]=0.01;

s[j]=s[j]+d[i][j];

}

};

for (j=1;j<=m;j++)

{

h[j]=0.0;

for (i=1;i<=n;i++)

h[j]=h[j]+(d[i][j]/s[j])*log(d[i][j]/s[j]); // Обчислення ентропії

l[j]=w[j]/(h[j]*(-1)); // Обчислення вагових коефіцієнтів

};

printf («nВведіть значення параметра важливості властивостей, що рідко зустрічаються: «);

scanf («%d»,&p);

for (i=1;i<=n;i++)

{

for (j=1;j<=m;j++) // Обчислення метрики

z[i]=z[i]+l[j]*power((1-d[i][j]), p);

if (i==1)

{

y=z[i];

e=i;

}

if (yВибір максимальної метрики

{

y=z[i]; // Визначення найкращого пакету

e=i;

}

};

printf (» nВ результаті обчислень отримано,nщо ближче до ідеалу знаходиться пакет ~%s~»,nm[e].pname);

//printf («nЙого метрика дорівнює: %le», y);

getch();

};

© Реферат плюс



Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *