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; }
/* 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; }
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; }
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; }