Пример #1
0
int main() {
    stringset strset;
    SetNew(&strset, StringCompare, NULL);

    assert(SetAdd(&strset, "lion"));
    assert(SetAdd(&strset, "tiger"));
    assert(SetAdd(&strset, "bear"));

    SetAdd(&strset, "dorothy");
    SetAdd(&strset, "scarecrow");
    SetAdd(&strset, "witch");
    SetAdd(&strset, "tin man");
    SetAdd(&strset, "wizard");

    assert(!SetAdd(&strset, "lion"));
    assert(!SetAdd(&strset, "tiger"));
    assert(!SetAdd(&strset, "bear"));

    SetPrint(&strset);

    printf("\nSet contains %d elements\n", SetSize(&strset));

    char *dorothy = SetSearch(&strset, "dorothy");
    char *elphaba = SetSearch(&strset, "elphaba");

    printf("\n");
    printf("Found dorothy: %s\n", dorothy == NULL ? "no" : "yes");
    printf("Found elphaba: %s\n", elphaba == NULL ? "no" : "yes");

    SetDestroy(&strset);

    return 0;
}
Пример #2
0
/* Generate the "y.output" log file */
void ReportOutput(struct lmno *lmnop)
{
	int i;
	struct state *stp;
	struct config *cfp;
	struct action *ap;
	FILE *fp;
	
	fp = file_open(lmnop,".out","w");
	if(fp==0)
		return;
	fprintf(fp," \b");
	for(i=0; i<lmnop->nstate; i++)
	{
		stp = lmnop->sorted[i];
		fprintf(fp,"State %d:\n",stp->index);
		if(lmnop->basisflag)
			cfp=stp->bp;
		else
			cfp=stp->cfp;
		while(cfp)
		{
			char buf[20];
			if(cfp->dot==cfp->rp->nrhs)
			{
				sprintf(buf,"(%d)",cfp->rp->index);
				fprintf(fp,"	%5s ",buf);
			}
			else
			{
				fprintf(fp,"		  ");
			}
			ConfigPrint(fp,cfp);
			fprintf(fp,"\n");
#ifdef TEST
			SetPrint(fp,cfp->fws,lmnop);
			PlinkPrint(fp,cfp->fplp,"To  ");
			PlinkPrint(fp,cfp->bplp,"From");
#endif
			if(lmnop->basisflag)
				cfp=cfp->bp;
			else
				cfp=cfp->next;
		}
		fprintf(fp,"\n");
		for(ap=stp->ap; ap; ap=ap->next)
		{
			if(PrintAction(ap,fp,30))
				fprintf(fp,"\n");
		}
		fprintf(fp,"\n");
	}
	fclose(fp);
	return;
}
Пример #3
0
int main(int argc,const char* argv[])
{
	SetPrint( argc, argv);
	short model = WhichModel(argc, argv);

	if( model == MODEL_1 )                          //model cvicenie 1, slidy strana 12, horny obrazok
	{
		SCPlace p[5];
		SCDirectedArc a[8];
		SCTransition t[3];

		p[0].SetArgStartVal(3);
		p[1].SetArgStartVal(1);

		PlToTr(&p[0],&t[0],&a[0]);
		TrToPl(&t[0],&p[2],&a[1]);
		PlToTr(&p[1],&t[0],&a[2]);
		PlToTr(&p[2],&t[1],&a[3]);
		TrToPl(&t[1],&p[3],&a[4]);
		PlToTr(&p[3],&t[2],&a[5]);
		TrToPl(&t[2],&p[1],&a[6]);
		TrToPl(&t[2],&p[4],&a[7]);

		Run();
	}
	else if( model == MODEL_2 )							//model cvicenie 1, slidy strana 12, dolny obrazok
	{
		SCPlace p[4];
		SCDirectedArc a[6];
		SCTransition t[3];

		p[0].SetArgStartVal(1);
	
		PlToTr(&p[0],&t[0],&a[0]);
		TrToPl(&t[0],&p[1],&a[1]);
		TrToPl(&t[1],&p[2],&a[2]);
		PlToTr(&p[2],&t[2],&a[3]);
		TrToPl(&t[2],&p[3],&a[4]);
		PlToTr(&p[0],&t[2],&a[5]);

		Run();
	}
	else if( model == MODEL_3 )						//model dokumentacia strana TODO: X
	{
		SCPlace p[3];
		SCDirectedArc a[4];
		SCTransition t[2];

		p[0].SetArgStartVal(2);
		t[0].SetArgProbability(70);

		PlToTr(&p[0],&t[0],&a[0]);
		PlToTr(&p[0],&t[1],&a[1]);
		TrToPl(&t[0],&p[1],&a[2]);
		TrToPl(&t[1],&p[2],&a[3]);

		Run();
	}
	else if( model == MODEL_4 )						//model dokumentacia strana TODO: X
	{
		SCPlace p[3];
		SCDirectedArc a[4];
		SCTransition t[2];

		p[0].SetArgStartVal(3);
		t[0].SetArgPrio(5);
		t[1].SetArgPrio(4);

		PlToTr(&p[0],&t[0],&a[0]);
		PlToTr(&p[0],&t[1],&a[1]);
		TrToPl(&t[0],&p[1],&a[2]);
		TrToPl(&t[1],&p[2],&a[3]);

		Run();
	}
//	else if( model == MODEL_5 )						//model dokumentacia strana TODO: X
	//{
		SCPlace p[12];
		SCDirectedArc a[27];
		SCTransition t[14];
	
		t[0].SetArgTime(10,TIME_EXP);
		TrToPl(&t[0],&p[0],&a[0]);
		PlToTr(&p[0],&t[1],&a[1]);
		t[1].SetArgTime(5);
		TrToPl(&t[1],&p[1],&a[2]);
		PlToTr(&p[1],&t[2],&a[3]);
		PlToTr(&p[1],&t[3],&a[4]);
		t[2].SetArgPrio(1);
		TrToPl(&t[2],&p[2],&a[5]);
		PlToTr(&p[2],&t[4],&a[6]); //koniec vetvy s prioritou 1
		t[3].SetArgPrio(2);
		TrToPl(&t[3],&p[3],&a[7]);
		PlToTr(&p[3],&t[5],&a[8]);
		t[5].SetArgTime((double)10,(double)20);
		TrToPl(&t[5],&p[4],&a[9]);
		PlToTr(&p[4],&t[6],&a[10]);
		TrToPl(&t[6],&p[5],&a[11]);
		TrToPl(&t[6],&p[6],&a[12]); //prechod k miestu s hodnotou 1 - vratenie
		p[6].SetArgStartVal(1);
		PlToTr(&p[5],&t[7],&a[13]); //koniec vetvy s prioritou 2
		PlToTr(&p[6],&t[3],&a[14]);
		//dolna vetva bez casu
		PlToTr(&p[0],&t[8],&a[15]);
		TrToPl(&t[8],&p[7],&a[16]);
		PlToTr(&p[7],&t[9],&a[17]); //vetva bez percent
		PlToTr(&p[7],&t[10],&a[18]);//vetva s 80 percentami zaciatok
		TrToPl(&t[9],&p[8],&a[19]);
		PlToTr(&p[8],&t[11],&a[20]);
		t[11].SetArgTime(5,TIME_EXP);
		TrToPl(&t[11],&p[9],&a[21]);
		PlToTr(&p[9],&t[12],&a[22]);//vetva bez percent koniec
		TrToPl(&t[10],&p[10],&a[23]);//vetva s 80 percentami pokracovanie
		PlToTr(&p[10],&t[13],&a[24]);
		t[13].SetArgTime(5);
		TrToPl(&t[13],&p[11],&a[25]);
		PlToTr(&p[11],&t[8],&a[26]);
		p[11].SetArgStartVal(5);

		SetSimulationLength(70);
		Run();
//	}
	/*
	SCPlace p[3];
	SCTransition t[3];
	SCDirectedArc a[6];

	p[0].SetArgStartVal(1);
	PlToTr(&p[0],&t[0],&a[0]);
	TrToPl(&t[0],&p[1],&a[1]);
	PlToTr(&p[1],&t[1],&a[2]);
	TrToPl(&t[1],&p[2],&a[3]);
	PlToTr(&p[2],&t[2],&a[4]);
	TrToPl(&t[2],&p[1],&a[5]);

	Run();
	*/
	g_allPlaces;
	return 0;
}
Пример #4
0
int main(int argc,const char* argv[])
{
	SetPrint( argc, argv);
	short model = WhichModel(argc, argv);

	if( model == MODEL_1 )									//model dokumentacia - obr 5.1, demonstruje funkcnost pravdepodobnostnych 
	{														//prechodov	
		SCPlace p[3];
		SCDirectedArc a[4];
		SCTransition t[2];

		p[0].SetArgStartVal(5);
		PlToTr(&p[0],&t[0],&a[0]);
		t[0].SetArgProbability(80);
		PlToTr(&p[0],&t[1],&a[1]);
		TrToPl(&t[0],&p[1],&a[2]);
		TrToPl(&t[1],&p[2],&a[3]);
		a[3].SetArgWeight(2);
		Run();
	}
	else if( model == MODEL_2 )								//model dokumentacia - obr 5.2, demonstruje funkcnost prioritnych prechodov
	{
		SCPlace p[4];
		SCDirectedArc a[5];
		SCTransition t[2];

		p[0].SetArgStartVal(5);
		p[1].SetArgStartVal(1);

		PlToTr(&p[0],&t[0],&a[0]);
		a[0].SetArgWeight(5);
		t[0].SetArgPrio(1);
		PlToTr(&p[1],&t[0],&a[1]);
		TrToPl(&t[0],&p[2],&a[2]);
		PlToTr(&p[0],&t[1],&a[3]);
		TrToPl(&t[1],&p[3],&a[4]);

		Run();
	}
	else if( model == MODEL_3 )								//model dokumentacia - obr x.3, demonstruje funkcnost casovych prechodov
	{														//a z toho vyplyvajucich priorit
		SCPlace p[4];
		SCDirectedArc a[5];
		SCTransition t[2];

		p[0].SetArgStartVal(10);
		p[1].SetArgStartVal(1);

		PlToTr(&p[0],&t[0],&a[0]);
		t[0].SetArgTimeEx(10,20);
		TrToPl(&t[0],&p[2],&a[1]);
		PlToTr(&p[0],&t[1],&a[2]);
		PlToTr(&p[1],&t[1],&a[3]);
		TrToPl(&t[1],&p[3],&a[4]);
		a[4].SetArgWeight(10);

		Run();
	}
	else if( model == MODEL_4 )								//model dokumentacia - obr x.4, demonstracia generovania poziadavkov
	{														//s casom generovanym		
		SCPlace p;
		SCDirectedArc a;
		SCTransition t;

		t.SetArgTime(5,TIME_EXP);
		TrToPl(&t,&p,&a);

		SetSimulationLength(100);
		Run();
	}
	else if( model == MODEL_5 )								//test model dokumentacia - obr x.5, demonstracia detekcie nekonecneho 
	{														//cyklu v nulovom case				
		SCPlace p[3];
		SCTransition t[3];
		SCDirectedArc a[6];

		p[0].SetArgStartVal(1);
		PlToTr(&p[0],&t[0],&a[0]);
		TrToPl(&t[0],&p[1],&a[1]);
		PlToTr(&p[1],&t[1],&a[2]);
		TrToPl(&t[1],&p[2],&a[3]);
		PlToTr(&p[2],&t[2],&a[4]);
		TrToPl(&t[2],&p[1],&a[5]);

		Run();
	}
	else if( model == MODEL_6 )								//hlavny model dokumentacia - obr x.6, nie je modelom realneho prostredia, sluzi
	{														//vyhradne pre prezentaciu funkcnosti simulatoru	
		SCPlace p[12];
		SCDirectedArc a[27];
		SCTransition t[14];
	
		t[0].SetArgTime(10,TIME_EXP);
		TrToPl(&t[0],&p[0],&a[0]);
		PlToTr(&p[0],&t[1],&a[1]);
		t[1].SetArgTime(5);
		TrToPl(&t[1],&p[1],&a[2]);
		PlToTr(&p[1],&t[2],&a[3]);
		PlToTr(&p[1],&t[3],&a[4]);
		t[2].SetArgPrio(1);
		TrToPl(&t[2],&p[2],&a[5]);
		PlToTr(&p[2],&t[4],&a[6]); //koniec vetvy s prioritou 1
		t[3].SetArgPrio(2);
		TrToPl(&t[3],&p[3],&a[7]);
		PlToTr(&p[3],&t[5],&a[8]);
		t[5].SetArgTimeEx(10,20);
		TrToPl(&t[5],&p[4],&a[9]);
		PlToTr(&p[4],&t[6],&a[10]);
		TrToPl(&t[6],&p[5],&a[11]);
		TrToPl(&t[6],&p[6],&a[12]); //prechod k miestu s hodnotou 1 - vratenie
		p[6].SetArgStartVal(1);
		PlToTr(&p[5],&t[7],&a[13]); //koniec vetvy s prioritou 2
		PlToTr(&p[6],&t[3],&a[14]);
		//dolna vetva bez casu
		PlToTr(&p[0],&t[8],&a[15]);
		TrToPl(&t[8],&p[7],&a[16]);
		PlToTr(&p[7],&t[9],&a[17]); //vetva bez percent
		PlToTr(&p[7],&t[10],&a[18]);//vetva s 80 percentami zaciatok
		t[10].SetArgProbability(80);
		TrToPl(&t[9],&p[8],&a[19]);
		PlToTr(&p[8],&t[11],&a[20]);
		t[11].SetArgTime(5,TIME_EXP);
		TrToPl(&t[11],&p[9],&a[21]);
		PlToTr(&p[9],&t[12],&a[22]);//vetva bez percent koniec
		TrToPl(&t[10],&p[10],&a[23]);//vetva s 80 percentami pokracovanie
		PlToTr(&p[10],&t[13],&a[24]);
		t[13].SetArgTime(5);
		TrToPl(&t[13],&p[11],&a[25]);
		PlToTr(&p[11],&t[8],&a[26]);
		p[11].SetArgStartVal(5);

		SetSimulationLength(1000);
		Run();
	}
	/*
	SCPlace p[3];
	SCDirectedArc a[5];
	SCTransition t[3];

	p[2].SetArgStartVal(1);
	t[0].SetArgTime(5,TIME_EXP);
	p[0].SetArgCapacity(1);
	t[1].SetArgTime(8);
	TrToPl(&t[0],&p[0],&a[0]);
	PlToTr(&p[0],&t[1],&a[1]);
	TrToPl(&t[1],&p[1],&a[2]);
	PlToTr(&p[2],&t[2],&a[3]);
	TrToPl(&t[2],&p[0],&a[4]);
	SetSimulationLength(31);
	*/
	return 0;
}