Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Литература / ОтчетСетиПетри / Рабочая программа

.doc
Скачиваний:
18
Добавлен:
16.04.2013
Размер:
67.07 Кб
Скачать

Начальные условия

S 4

S1 S2 S3 S4 ##

Ns 4

3 2 1 2 ##

T 3

T1 T2 T3 ##

TIME 3

1 2 1 ##

NAMES 3

S1 S2 S3 ##

NAMET 3

T1 T2 T3 ##

N 3

1 2 2 ##

NAMET 3

T1 T2 T3 ##

NAMES 3

S3 S3 S4 ##

K 3

2 1 1 ##

TSTART 1

-1 ##

TAKT 1

T2 ##

TFIN 1

1 ##

TIME 6

1 1 2 3 3 4 ##

NAMES 6

S1 S3 S4 S1 S3 S1 ##

NS 6

1 1 2 2 1 1 ##

Результат моделирования от 0 до 4

-1 T2 1

0 T1 1

1 T1 2

1 T3 2

1 T2 3

2 T1 3

2 T3 3

3 T1 4

3 T3 4

S2

T2(1)

// cAttr.h

#ifndef CATTR_H

#define CATTR_H

#include <vector>

#include <fstream>

#include <string>

using namespace std;

template < class T >

class cAttr{

public:

cAttr();

cAttr( char* fileName, int& count );

string getName() const;

void setName( string nName );

int size();

T& getCell( int pos );

//void print ( char* fileName);

void print ();

void Delete ( int pos );

private:

string attrName;

vector < T > cell;

};

#endif

// cAttr.cpp

#include "cAttr.h"

#include <algorithm>

using namespace std;

template < class T > cAttr<T>:: cAttr () {;}

template < class T >

cAttr<T>:: cAttr( char fileName[], int& count){

string temp;

ifstream fin( fileName );

int i = 0;

while ( i != count){

fin >> temp;

if ( temp == "##") ++i;

}

fin >> attrName;

int size;

fin >> size;

T tTemp;

for ( int i =0; i < size; ++i ){

fin >> tTemp;

cell.push_back( tTemp );

}

fin >> temp;

count += 1;

fin.close();

}

template <class T> string cAttr< T >::getName() const{

return attrName;

}

template <class T> void cAttr< T >::setName(string nName ){

attrName = nName;

}

template < class T > int cAttr< T >::size(){

return cell.size();

}

template < class T > T& cAttr< T >:: getCell ( int pos ){

return cell[ pos ];

}

template < class T > void cAttr< T >::print(){

cout << "attrName = " << attrName << ' ';

for ( int i = 0; i < cell.size(); ++i){

cout << cell[ i ] << ' ';

}

cout << endl;

}

template <class T> void cAttr <T>::Delete(int pos){

cout << "Process of deleting starts,.." << endl;

vector <T> nCell;

for ( int i = 0; i < cell.size(); ++i){

if ( i != pos) nCell.push_back( cell[i] );

cout << i << "itteration";

}

cell.pop_back();

cell = nCell;

}

// cKort.h

#ifndef CKORT_H

#define CKORT_H

#include "cAttr.h"

#include "cAttr.cpp"

using namespace std;

template <class T1, class T2>

class cKort2{

public:

cKort2() {}

cKort2 ( T1 First, T2 Second ){ first = First; second = Second; }

void setFirst ( T1 nF ) { first = nF; }

void setSecond ( T2 nS ) { second = nS;}

const T1 getFirst () const { return first;}

const T2 getSecond () const { return second;}

virtual void setNew (cKort2<T1, T2>& nRel) { first = nRel.getFirst(); second = nRel.getSecond();}

virtual void print() const { cout << first << " " << second << endl; }

protected:

T1 first;

T2 second;

};

template <class T1, class T2, class T3>

class cKort3: public cKort2<T1, T2>{

public:

cKort3() {;}

cKort3 ( T1 First, T2 Second, T3 Third ):

cKort2<T1, T2> (First, Second) {third = Third; }

void setThird ( T3 nT ) { third = nT; }

T3 getThird () { return third; }

void print() const { cout << first << " " << second << " " << third << endl; }

void print ( char fileName[]) const;

private:

T3 third;

};

template < class T1, class T2, class T3 >

void cKort3<T1, T2, T3>::print ( char fileName[] ) const{

ofstream fout ( fileName, ios::app );

fout << first << " " << second << " " << third << endl;

fout.close();

}

#endif

// cRel.h

#ifndef CREL_H

#define CREL_H

#include "cKort.h"

using namespace std;

template <class T1, class T2>

class cRel2{

public:

cRel2() {;}

cRel2(vector< cKort2<T1, T2> >& sourse) {rel = sourse;}

void setRel2(vector< cKort2<T1, T2> >& sourse)

{rel sourse;}

void add (cKort2 <T1, T2> Kor) {rel.push_back(Kor);}

void Delete1(T1& sourse);

void Delete2(T2& sourse);

int size () { return rel.size(); }

cKort2<T1, T2>& operator[] (int pos) {return rel[pos];}

private:

vector < cKort2<T1, T2> > rel;

};

template <class T1, class T2>

void cRel2< T1, T2 >::Delete1(T1& sourse){

vector< cKort2 <T1, T2, T3> >::iterator Iter;

for (int i = 0; i < rel.size(); ++i)

if ( rel[i].getFirst() == sourse ){

Iter = rel.begin() + i;

rel.erase( Iter, Iter + 1 );

}

}

template <class T1, class T2>

void cRel2< T1, T2 >::Delete2(T2& sourse){

vector< cKort2 <T1, T2, T3> >::iterator Iter;

for (int i = 0; i < rel.size(); ++i)

if ( rel[i].getSecond() == sourse ){

Iter = rel.begin() + i;

rel.erase( Iter, Iter + 1 );

}

}

template <class T1, class T2, class T3>

class cRel3{

public:

cRel3() {;}

cRel3(vector< cKort3<T1, T2, T3> >& sourse) {rel=sourse;}

void setRel3(vector< cKort3<T1, T2, T3> >& sourse) { rel = sourse; }

void add (cKort3 <T1, T2, T3>& Kor) {rel.push_back(Kor);}

void Delete1(T1& sourse);

void Delete2(T2& sourse);

void Delete3(T3& sourse);

int size () { return rel.size(); }

cKort3< T1, T2, T3 >& operator [] ( int pos ) { return rel[pos]; }

private:

vector < cKort3<T1, T2, T3> > rel;

};

template <class T1, class T2, class T3>

void cRel3< T1, T2, T3 >::Delete1(T1& sourse){

vector< cKort3 <T1, T2, T3> >::iterator Iter;

for (int i = 0; i < rel.size(); ++i)

if ( rel[i].getFirst() == sourse ){

Iter = rel.begin() + i;

rel.erase( Iter, Iter + 1 );

}

}

template <class T1, class T2, class T3>

void cRel3< T1, T2, T3 >::Delete3(T3& sourse){

vector< cKort3 <T1, T2, T3> >::iterator Iter;

for (int i = 0; i < rel.size(); ++i)

if ( rel[i].getThird() == sourse ){

Iter = rel.begin() + i;

rel.erase( Iter, Iter + 1 );

}

}

template <class T1, class T2, class T3>

void cRel3< T1, T2, T3 >::Delete2(T2& sourse){

vector< cKort3 <T1, T2, T3> >::iterator Iter;

for (int i = 0; i < rel.size(); ++i)

if ( rel[i].getSecond() == sourse ){

Iter = rel.begin() + i;

rel.erase( Iter, Iter + 1 );

}

}

#endif

// protocol.h

#ifndef PROTOCOL_H

#define PROTOCOL_H

#include "cRel.h"

#include <iostream>

using namespace std;

class cProtocol{

public:

cProtocol () {;}

void addEvent ( cKort3 <int, string, int> nEvent);

void print() const;

private:

vector < cKort3< int, string, int> > event;

};

#endif

// protocol.cpp

#include "protocol.h"

using namespace std;

void cProtocol::addEvent( cKort3 <int, string, int> nEvent ){

event.push_back( nEvent);

}

void cProtocol::print() const{

char fileName[80];

cout << "Enter name of file to print event protocol -> ";

cin >> fileName;

for(int i = 0; i < event.size(); ++i ) event[i].print( fileName);

}

// net.h

#ifndef NET_H

#define NET_H

#include "protocol.h"

#include <iostream>

using namespace std;

class cPetry{

public:

cPetry (char fileName []);

void print();

void model( int tStart, int tFinish

private:

cRel2<string, int> Sn;

cRel2<string, int> Tt;

cRel3<string, string, int> TSk;

cRel3<string, string, int> STn;

cRel3<int, string, int> activeT;

cRel3<int, string, int> externalAct;

cProtocol protocol;

void finishAct( int time );

void addExternal( int time );

bool startAct( int time );

};

#endif

// driver.cpp

#include "net.h"

using namespace std;

int main(){

cout << "Program models net Petry from 0 to 4 time" << endl;

char fileName [80];

cout << "Enter sourse file name -> ";

cin >> fileName;

cPetry prExempl(fileName);

prExempl.model( 0, 5 );

return 0;

}

Соседние файлы в папке ОтчетСетиПетри