Дисциплина : Дискретни структури и моделиране Студент: Мюкерем Джевдет Вели Проверил: Фак. Ном: 073272 Група: 25б специалност: кст русе 2009г. Съдържание



Дата03.01.2017
Размер133.63 Kb.
#11593
Русенски университет

Ангел Кънчев”



Курсова работа
Дисциплина : Дискретни структури и моделиране

Студент: Мюкерем Джевдет Вели Проверил:

Фак.Ном: 073272

Група:25Б

Специалност:КСТ

Русе 2009г.


Съдържание



  1. Задание..................................................................................................3

  2. Архитектура на средата........................................................................4

  3. Описание на функциите и процедурите..............................................5

  4. Работа с програмата.............................................................................6

  5. Системни изисквания..........................................................................12

  6. Пълният код на програмата................................................................13


Задание No 79 - Фак. No 073272

Да се проектира и реализира инструментално средство за моделиране с непрекъснати Марковски вериги (НМВ), работещо в цветен текстов и графичен режим на монитора и реализиращо следните изисквания:

  • въвеждане на НМВ от тип “гибел и размножаване” със списъци на върховете;

  • въвеждане от структуриран файл на интензивностите на преходите;

  • изчисляване на финалните вероятности;

  • представяне на НМВ;

  • записване на НМВ и финалните вероятности в структурирания файл.




Архитектура на средата

Описание на функциите и процедурите
Функция: vyvejdane_danni;

Променливи: i:променлива от тип integer;

n:променлива от тип integer;

it[],gb[]:масиви от тип float;


Функция:izvejdane_danni;

Променливи: i:променлива от тип integer;

n:променлива от тип integer;

it[],gb[]:масиви от тип float;


Функция: szdFile;

Променливи:ch: променлива от тип char;

Imefl: масив от символи от тип char;
Функция:dobaviane_komponent;

Променливи: ch: променлива от тип char;

Imefl: масив от символи от тип char;

n:променлива от тип integer;

it[],gb[]:масиви от тип float;
Функция:prochitane;

Променливи: ch: променлива от тип char;

Imefl: масив от символи от тип char;

n:променлива от тип integer;

it[],gb[]:масиви от тип float;

fl:променлива от тип char;

k:променлива от тип integer;
Функция:vyvejdane;

Променливи:nomer:променлива от тип integer;

m:променлива от тип integer;

next,p,head,tail:указатели;


Функция:izvejdane;

Променливи:nomer:променлива от тип integer;

m,i:променлива от тип integer;

next,p,head,tail:указатели;

Функция:grafics;

Променливи: m:променлива от тип integer;

graphdriver,graphmode:променлива от тип integer;
Функция:presmqtane;

Променливи:pr,pr2,p – променливи от тип float;

gb,it:масиви от тип float;

i:променлива от тип integer;

fl:променлива от тип char;

po,s:променлливи от тип float;

Функция:main;

Променливи:menu:променлива от тип integer;

graphdriver,graphmode:променлива от тип integer;

Работа с програмата
След стартиране на програмата се появява прозорецът показан на снимката:


Появява се менюто с командите и чака потребителят да въведе номера на съответната команда.Чрез командата 1 се въвеждат върховете на непрекъсната марковска верига в списък. С задаването на команда номер 2 се прочитат въведените стойности.

При въвеждането на команда 1 на екрана се появява следната снимка:



А след задаването на върхове и команда 2 за причитането им на екрана се почвява следната снимка:

Ако няма въведени върхове, съответно на екрана се изписва, че няма въведени такива.

За да се зададат стойности за гибел и размножаване първо трябва да се създаде файл, с който ще се работи.Това става, чрез командата 4.След задаването му на екрана се появява запитване за името на файла и потвърждение ,че е създаден след въвеждането на името.Ако файлът съществува следва запитване дали да се презапише. Следната снимка показва потвърждението за създаването на файла:



След създаването на празния файл може да се въведат командите за задаване на стойностите за гибел и размножаване. Командата 5 служи за това, като в текущата програма стойностите са ограничени до осем. След задаването му на екрана се появява следната снимка:


Запитват се броя стойности.След тяхото въввеждане се изисква натискането на ‘n’ за край на въвеждането, както на снимката:



За прочитане на въведените стойности за гибел и размножаване служи командата 6.На екрана се появява:



Командата 7 е за пресмятане на стационарните вероятности.За въведените примерни стойности стационарните вероятности са както на снимката:



След въвеждане и изпълнение на всяка команда се изисква натискането на произволен клавиш за връщане в менюто.
За изобразяване на примерна непрекъсната марковска верига се използва команда 3, като след задаването му се запитва колко върха се желаят да бъдат изобразени. При текущата програма те са ограничени до осем. След задаване на 3 на екрана се появява:

Ако зададем например два върха,което е минималния брой, на екрана се появява следната снимка:

Ако се зададе максималният брой върхове, които са осем на екрана се появява следното:

За изход от програмата се въвежда 0.



Системни изисквания
За Microsoft Windows

  • Поддържат се всички, за които има инсталиран C++

  • Процесор: 486/DX или по-бърз

  • Памет: свободни минимум 20 мегабайта RAM, препоръчителни 30 мегабайта RAM.

  • Свободно дисково пространство: 500 байта.

  • Резолюция: 640x480(минимална), 800x600(препоръчителна) и по – висока

За Linux базирани системи



  • Поддържат се всички, за които има инсталиран C++

  • Процесор: 486/DX или по-бърз

  • Памет: свободни минимум 20 мегабайта RAM, препоръчителни 30 мегабайта RAM.

  • Свободно дисково пространство: 500 байта.

  • Резолюция: 640x480(минимална), 800x600(препоръчителна) и по – висока



Пълният код на програмата

#include

#include

#include

#include

#include

#include

#include


struct vryh

{

int nomer;



char vryhN[8];

vryh *next;


};
int nomer=0;

int n;


float it[7];

float gb[7];

FILE *fl;

char imefl[30];

char ch;

void vyvejdane_danni()

{

int i;


cout<<"Zadaite broq na intenzivnostite za gibel i razmnojavane: "<

cin>>n;


cout<<"Vyvedete intenzivnost: "<for(i=0;i

{

cout<<"Vyvedete " <

cin>>it[i];

}

cout<<"Vyvedete intenzivnostite za gibel: "<

for(i=0;i

{

cout<<"Vyvedete " <

cin>>gb[i];

}

}


void izvejdane_danni()

{

int i,n;



for(i=0;i

{

cout<<"Intenzivnost za razmnojavane "<

cout<<"Intenzivnost za gibel" <

}

}


int exist(char *ime)

{

FILE *f=fopen(ime,"r");fclose(f);



return f!=NULL;

}
void szdFile()

{

cout<<"Zadaite ima na fajl s koito shte rabotite: "<

char ch;

if(exist(imefl)){

cout<<"Failyt syshtestvuva!"<

cout<<"Da go prezapisha li?"<

ch=getchar();

if(ch=='n') return;

}

fl=fopen(imefl,"w");



fclose(fl);

cout<<"Fajlyt e syzdaden!"<
}
void dobaviane_komponent()

{

char ch;



if(!exist(imefl)){

cout<<"Failyt ne e syzdaden!"<

}

fl=fopen(imefl,"a+b");



do{

vyvejdane_danni();

fwrite(&n,sizeof(int),1,fl);

fwrite(&it,sizeof(float),n,fl);

fwrite(&gb,sizeof(float),n,fl);
cout<<"Natisnete 'n' za da sprete vyvejdaneto!"<

ch=getchar();getchar();

}while (ch!='n');

fclose(fl);

}
void prochitane()

{

int k;



if(!exist(imefl)){

cout<<"Failyt ne e syzdaden!"<

}

fl=fopen(imefl,"rb");k=0;



fread(&n,sizeof(int),1,fl);

fread(&it,sizeof(float),n,fl);

fread(&gb,sizeof(float),n,fl);

while(!feof(fl)){

k++;izvejdane_danni();

fread(&it,sizeof(float),n,fl);

fread(&gb,sizeof(float),n,fl);

}

if(k==0) cout<<"Fajlyt e prazen!"<

fclose(fl);

}
void vyvejdane(vryh **head,vryh **tail)

{

int m;


cout<<"Vyvedete broq na vyrhovete: "<

cin>>m;


for(nomer=0;nomer{

vryh *p;



p=new(vryh);

if(!head) *tail=p;

p->next=*head;

*head=p;


p->nomer=nomer;
cout<<"Vyvedete "<cin>>p->vryhN;

}

}
void izvejdane(vryh *head)



{

int i=0;


vryh *p=head;

if (!(p)){

cout<<"Nqma vyvedeni vyrhove!"<

}

while(p)



{

cout<<"Nomer" <


nomer<<" Vryh: "<
vryhN<i++;


if(i>=nomer)break;

p=p->next;

};
}
void presmqtane()

{

int i;



float pr[7];

float pr2[8];

float po,s,s1;

float p[8];

if(!exist(imefl)){

cout<<"Fajlyt ne e syzdaden!"<

}

fl=fopen(imefl,"r+b");



fread(&n,sizeof(int),1,fl);

fread(&it,sizeof(float),n,fl);

fread(&gb,sizeof(float),n,fl);
while(!feof(fl)){

for(i=1;i

{
pr2[0]=1;

pr[i]=(it[i-1]/gb[i-1]);

pr2[i]=(pr[i]*pr2[i-1]);
s+=pr2[i];

s1=s+1;


po=pow(s1,(-1));
p[0]=po;

p[1]=(p[0]*pr[1]);

p[2]=(p[1]*pr[2]);

p[3]=(p[2]*pr[3]);

p[4]=(p[3]*pr[4]);

p[5]=(p[4]*pr[5]);

p[6]=(p[5]*pr[6]);

p[7]=(p[6]*pr[7]);


fwrite(&po,sizeof(float),1,fl);

fread(&po,sizeof(float),1,fl);


fwrite(&p,sizeof(float),n+1,fl);

fread(&p,sizeof(float),n+1,fl);


}
for(i=0;i{

cout<<"P "<

}

}

fclose(fl);



}
void grafics()

{

int m;



int graphdriver=VGA,graphmode=VGAHI;

initgraph(&graphdriver,&graphmode,"C:\\bc5\\bgi");

setbkcolor(11);

cout<<"Vyvedete broq na vyrhovete: "<

cin>>m;
switch(m)

{

case 2:



setcolor(5);

settextstyle(DEFAULT_FONT,HORIZ_DIR,2);

outtextxy(110,150,"NEPREKYSNATA MARKOVSKA VERIGA");

outtextxy(110,200,"S0");

outtextxy(180,200,"S1");

setbkcolor(9);

setfillstyle(SOLID_FILL,3);

fillellipse(110,250,30,30);

fillellipse(180,250,30,30);

line(130,225,160,225);

line(130,275,160,275);

//strelki

line(155,220,160,225);

line(155,230,160,225);


line(135,270,130,275);

line(135,280,130,275);

break;

case 3:


setcolor(5);

settextstyle(DEFAULT_FONT,HORIZ_DIR,2);

outtextxy(110,150,"NEPREKYSNATA MARKOVSKA VERIGA");

outtextxy(180,200,"S0");

outtextxy(250,200,"S1");

outtextxy(320,200,"S2");

setbkcolor(9);

setfillstyle(SOLID_FILL,3);

fillellipse(180,250,30,30);

fillellipse(250,250,30,30);

fillellipse(320,250,30,30);
line(200,225,230,225);

line(200,275,230,275);


line(270,225,300,225);

line(270,275,300,275);


//stelki

line(225,220,230,225);

line(225,230,230,225);

line(295,220,300,225);

line(295,230,300,225);

line(205,270,200,275);

line(205,280,200,275);

line(275,270,270,275);

line(275,280,270,275);

break;


case 4:

setcolor(5);

settextstyle(DEFAULT_FONT,HORIZ_DIR,2);

outtextxy(110,150,"NEPREKYSNATA MARKOVSKA VERIGA");

outtextxy(180,200,"S0");

outtextxy(250,200,"S1");

outtextxy(320,200,"S2");

outtextxy(390,200,"S3");

setbkcolor(9);

setfillstyle(SOLID_FILL,3);

fillellipse(180,250,30,30);

fillellipse(250,250,30,30);

fillellipse(320,250,30,30);

fillellipse(390,250,30,30);


line(200,225,230,225);

line(200,275,230,275);


line(270,225,300,225);

line(270,275,300,275);


line(340,225,370,225);

line(340,275,370,275);


//strelki

line(225,220,230,225);

line(225,230,230,225);

line(295,220,300,225);

line(295,230,300,225);

line(205,270,200,275);

line(205,280,200,275);

line(275,270,270,275);

line(275,280,270,275);
line(365,220,370,225);

line(365,230,370,225);

line(345,270,340,275);

line(345,280,340,275);

break;

case 5:


setcolor(5);

settextstyle(DEFAULT_FONT,HORIZ_DIR,2);

outtextxy(110,150,"NEPREKYSNATA MARKOVSKA VERIGA");

outtextxy(110,200,"S0");

outtextxy(180,200,"S1");

outtextxy(250,200,"S2");

outtextxy(320,200,"S3");

outtextxy(390,200,"S4");

setbkcolor(9);

setfillstyle(SOLID_FILL,3);

fillellipse(110,250,30,30);

fillellipse(180,250,30,30);

fillellipse(250,250,30,30);

fillellipse(320,250,30,30);

fillellipse(390,250,30,30);
line(130,225,160,225);

line(130,275,160,275);


line(200,225,230,225);

line(200,275,230,275);


line(270,225,300,225);

line(270,275,300,275);


line(340,225,370,225);

line(340,275,370,275);


//strelki

line(155,220,160,225);

line(155,230,160,225);
line(135,270,130,275);

line(135,280,130,275);


line(225,220,230,225);

line(225,230,230,225);

line(295,220,300,225);

line(295,230,300,225);

line(205,270,200,275);

line(205,280,200,275);

line(275,270,270,275);

line(275,280,270,275);


line(365,220,370,225);

line(365,230,370,225);

line(345,270,340,275);

line(345,280,340,275);

break;

case 6:


setcolor(5);

settextstyle(DEFAULT_FONT,HORIZ_DIR,2);

outtextxy(110,150,"NEPREKYSNATA MARKOVSKA VERIGA");

outtextxy(110,200,"S0");

outtextxy(180,200,"S1");

outtextxy(250,200,"S2");

outtextxy(320,200,"S3");

outtextxy(390,200,"S4");

outtextxy(460,200,"S5");

setbkcolor(9);

setfillstyle(SOLID_FILL,3);

fillellipse(110,250,30,30);

fillellipse(180,250,30,30);

fillellipse(250,250,30,30);

fillellipse(320,250,30,30);

fillellipse(390,250,30,30);

fillellipse(460,250,30,30);
line(130,225,160,225);

line(130,275,160,275);


line(200,225,230,225);

line(200,275,230,275);


line(270,225,300,225);

line(270,275,300,275);


line(340,225,370,225);

line(340,275,370,275);


line(410,225,440,225);

line(410,275,440,275);


//strelki

line(155,220,160,225);

line(155,230,160,225);
line(135,270,130,275);

line(135,280,130,275);


line(225,220,230,225);

line(225,230,230,225);

line(295,220,300,225);

line(295,230,300,225);

line(205,270,200,275);

line(205,280,200,275);

line(275,270,270,275);

line(275,280,270,275);


line(365,220,370,225);

line(365,230,370,225);

line(345,270,340,275);

line(345,280,340,275);


line(435,220,440,225);

line(435,230,440,225);

line(415,270,410,275);

line(415,280,410,275);

break;

case 7:


setcolor(5);

settextstyle(DEFAULT_FONT,HORIZ_DIR,2);

outtextxy(110,150,"NEPREKYSNATA MARKOVSKA VERIGA");

outtextxy(40,200,"S0");

outtextxy(110,200,"S1");

outtextxy(180,200,"S2");

outtextxy(250,200,"S3");

outtextxy(320,200,"S4");

outtextxy(390,200,"S5");

outtextxy(460,200,"S6");

setbkcolor(9);

setfillstyle(SOLID_FILL,3);

fillellipse(40,250,30,30);

fillellipse(110,250,30,30);

fillellipse(180,250,30,30);

fillellipse(250,250,30,30);

fillellipse(320,250,30,30);

fillellipse(390,250,30,30);

fillellipse(460,250,30,30);
line(60,225,90,225);

line(60,275,90,275);


line(130,225,160,225);

line(130,275,160,275);


line(200,225,230,225);

line(200,275,230,275);


line(270,225,300,225);

line(270,275,300,275);


line(340,225,370,225);

line(340,275,370,275);


line(410,225,440,225);

line(410,275,440,275);


//strelki

line(85,220,90,225);

line(85,230,90,225);
line(65,270,60,275);

line(65,280,60,275);


line(155,220,160,225);

line(155,230,160,225);


line(135,270,130,275);

line(135,280,130,275);


line(225,220,230,225);

line(225,230,230,225);

line(295,220,300,225);

line(295,230,300,225);

line(205,270,200,275);

line(205,280,200,275);

line(275,270,270,275);

line(275,280,270,275);


line(365,220,370,225);

line(365,230,370,225);

line(345,270,340,275);

line(345,280,340,275);


line(435,220,440,225);

line(435,230,440,225);

line(415,270,410,275);

line(415,280,410,275);

break;

case 8:


setcolor(5);

settextstyle(DEFAULT_FONT,HORIZ_DIR,2);

outtextxy(110,150,"NEPREKYSNATA MARKOVSKA VERIGA");

outtextxy(40,200,"S0");

outtextxy(110,200,"S1");

outtextxy(180,200,"S2");

outtextxy(250,200,"S3");

outtextxy(320,200,"S4");

outtextxy(390,200,"S5");

outtextxy(460,200,"S6");

outtextxy(530,200,"S7");

setbkcolor(9);

setfillstyle(SOLID_FILL,3);

fillellipse(40,250,30,30);

fillellipse(110,250,30,30);

fillellipse(180,250,30,30);

fillellipse(250,250,30,30);

fillellipse(320,250,30,30);

fillellipse(390,250,30,30);

fillellipse(460,250,30,30);

fillellipse(530,250,30,30);
line(60,225,90,225);

line(60,275,90,275);


line(130,225,160,225);

line(130,275,160,275);


line(200,225,230,225);

line(200,275,230,275);


line(270,225,300,225);

line(270,275,300,275);


line(340,225,370,225);

line(340,275,370,275);


line(410,225,440,225);

line(410,275,440,275);


line(480,225,510,225);

line(480,275,510,275);

//strelki

line(85,220,90,225);

line(85,230,90,225);
line(65,270,60,275);

line(65,280,60,275);


line(155,220,160,225);

line(155,230,160,225);


line(135,270,130,275);

line(135,280,130,275);


line(225,220,230,225);

line(225,230,230,225);

line(295,220,300,225);

line(295,230,300,225);

line(205,270,200,275);

line(205,280,200,275);

line(275,270,270,275);

line(275,280,270,275);


line(365,220,370,225);

line(365,230,370,225);

line(345,270,340,275);

line(345,280,340,275);


line(435,220,440,225);

line(435,230,440,225);

line(415,270,410,275);

line(415,280,410,275);


line(505,220,510,225);

line(505,230,510,225);

line(485,270,480,275);

line(485,280,480,275);

break;

}

getch();



closegraph();
}
void main()

{

vryh *head=NULL,*tail=NULL;



int menu;

do{


int graphdriver=VGA,graphmode=VGAHI;

initgraph(&graphdriver,&graphmode,"C:\\bc5\\bgi");

setbkcolor(1);
cout<<"\n1.Vyvejdane na vyrhovete";

cout<<"\n2.Izvejdane na vyrhovete";

cout<<"\n3.Grafika na neprekysnatata markovska veriga";

cout<<"\n4.Syzdavane na prazen fajl";

cout<<"\n5.Dobavqne stojnostite za gibel i razmnojavane i zapisvane vyv fajl";

cout<<"\n6.Prochitane na stojnostite";

cout<<"\n7.Presmqtane";

cout<<"\n0.Izhoh\n";

cin>>menu;

cin.sync();


switch(menu)

{
case 1:

setbkcolor(1);

vyvejdane(&head,&tail);

getch();

break;


case 2:

setbkcolor(14);

izvejdane(head);

getch();


break;

case 3:


grafics();

break;


case 4:

setbkcolor(14);

szdFile();

getch();


break;

case 5:


setbkcolor(5);

dobaviane_komponent();

getch();

break;


case 6:

setbkcolor(8);

prochitane();

getch();


break;

case 7:


setbkcolor(4);

presmqtane();

getch();

break;


};

}while(menu);


}



Каталог: kst -> download -> Diskretni%20strukturi
kst -> Конспект по дисциплина "Програмиране в Internet"
kst -> Компютърни мрежи
kst -> Лекция №2 Проектиране на сгис
kst -> Лекция №2, 2012 Системи с Програмируема Логика
Diskretni%20strukturi -> По Дискретни структури и моделиране Студент: Христо Димитров Русанов Фак.№063131
download -> Конспект по дисциплината „Криптография и защита на данните”
download -> 1Цели на упражнението
download -> Отчет за изразходваните материали за всеки ремонт/услуга и за изразходването за целия месец. Изискват се


Сподели с приятели:




©obuch.info 2024
отнасят до администрацията

    Начална страница