Program rieši problém generovania testov prostredníctvom Boolovskej diferencie
Delphi & Pascal (česká wiki)
Kategórie: Programy v C, C++
Program: Prac_ndf.c, Booldif.zip
Soubor exe: Booldif.exe
Potřebné: Adresar.c, Color.c, Derivac.c, Error.c, Funkcie.c, Help.c, Key.c, Line_edi.c, Main.c, Menu.c, Obsluha.c, Okno.c, Prac_ndf.c, Slovnik.c, Slov_fon.c, Statist.c, Util.c, Video.c, Vystupy.c, Adresar.h, Color.h, Define.h, Error.h, Funkcie.h, Glob.h, Key.h, Line_edi.h, Mbooldif.h, Menu.h, Okno.h, Slov_fon.h, Util.h, Video.h
Příklady: Example.zip, Bin_10_o.ndf, Bin_10_o.ndf, Bin_1and.ndf, Bin_2rad.ndf, Bin_3rad.ndf, Bin_4rad.ndf, Hard.ndf, I_reg_lo.ndf, Reg_jk.ndf, Scitac_s.ndf, Scp_1rad.ndf, Scp_2rad.ndf, Scp_2r_1.ndf, Scp_3rad.ndf, Scp_4r_2.ndf, Scp_6r_3.ndf, Scp_8r_4.ndf, Sc_1r_pj.ndf, Sc_1r_sj.ndf, Sc_1_aoi.ndf, Sc_2r_4.ndf, Sc_3r_6.ndf, Sc_7400n.ndf, Sc_aon.ndf, Simp3_a.ndf, Simp3_b.ndf, Simp4_a.ndf, Simp4_b.ndf, Simp4_c.ndf, Simp6_a.ndf, Test_vod.ndf, Zle.ndf
Manual: Prirucky.zip
Program: Prac_ndf.c, Booldif.zip
Soubor exe: Booldif.exe
Potřebné: Adresar.c, Color.c, Derivac.c, Error.c, Funkcie.c, Help.c, Key.c, Line_edi.c, Main.c, Menu.c, Obsluha.c, Okno.c, Prac_ndf.c, Slovnik.c, Slov_fon.c, Statist.c, Util.c, Video.c, Vystupy.c, Adresar.h, Color.h, Define.h, Error.h, Funkcie.h, Glob.h, Key.h, Line_edi.h, Mbooldif.h, Menu.h, Okno.h, Slov_fon.h, Util.h, Video.h
Příklady: Example.zip, Bin_10_o.ndf, Bin_10_o.ndf, Bin_1and.ndf, Bin_2rad.ndf, Bin_3rad.ndf, Bin_4rad.ndf, Hard.ndf, I_reg_lo.ndf, Reg_jk.ndf, Scitac_s.ndf, Scp_1rad.ndf, Scp_2rad.ndf, Scp_2r_1.ndf, Scp_3rad.ndf, Scp_4r_2.ndf, Scp_6r_3.ndf, Scp_8r_4.ndf, Sc_1r_pj.ndf, Sc_1r_sj.ndf, Sc_1_aoi.ndf, Sc_2r_4.ndf, Sc_3r_6.ndf, Sc_7400n.ndf, Sc_aon.ndf, Simp3_a.ndf, Simp3_b.ndf, Simp4_a.ndf, Simp4_b.ndf, Simp4_c.ndf, Simp6_a.ndf, Test_vod.ndf, Zle.ndf
Manual: Prirucky.zip
Program rieši problém generovania testov prostredníctvom Boolovskej diferencie. Riešenie vyplýva z metódy matematicej derivácie logických zápisov funkcie v tvare Boolovského zápisu. Vytvára vektory porúch pre daný obvod, pričom zohľadňuje všetky vetviace sa vodiče. Výsledkom je úplný test.
Je implementovaný v programovacom jazyku C pre operačný systém MS-DOS, alebo iný s ním kompatibilným. Program je vhodný pre interaktívny spôsob komunikácie s užívateľom, čo umožňuje pohodlné pracovné prostredie podobné systémom Turbo Vision.
Ako príklad skúste nasledovné.
POZNÁMKA: Zdrojové kódy ktoré simulujú prostredie Turbo Vision niesu dielom autora.
Je implementovaný v programovacom jazyku C pre operačný systém MS-DOS, alebo iný s ním kompatibilným. Program je vhodný pre interaktívny spôsob komunikácie s užívateľom, čo umožňuje pohodlné pracovné prostredie podobné systémom Turbo Vision.
Ako príklad skúste nasledovné.
- Menu->Voľby->Vstup->Zo Súboru. Vyberte si niektorý z ukážkových súborov.
- Menu->Činnosť->Boolovské diferencie->Primárne vodiče
- Menu->Činnosť->Boolovské diferencie->Vnútorné vodiče
- Menu->Výsledky - môžete si pozrieť výsledky práce programu
POZNÁMKA: Zdrojové kódy ktoré simulujú prostredie Turbo Vision niesu dielom autora.
/***************************************************************************** * * * Subor LINE_EDI.C * * * *****************************************************************************/ #include <string.h> #include "glob.h" #include "video.h" #include "key.h" #include "line_edi.h" //************************************************************************// // RIADKOVY_EDITOR // // 30.10.1997 // //************************************************************************// int riadkovy_editor(int zacx,int zacy,int sirka,int maxdlzka,unsigned char attr1, unsigned char attr2,char *retazec) { register int i; //pomocna int zaciatocny=0; // int aktualny=0; // int koniec=0; //koniec cyklu int kl; //klaves int dlzka; //aktualna dlzka retazca dlzka=strlen(retazec); if(dlzka<sirka-2) { zaciatocny=0; aktualny=dlzka; } else { aktualny=sirka-2; zaciatocny=dlzka-aktualny; } tlac_riadkovy_editor(zacx,zacy,sirka,zaciatocny,attr1,attr2,retazec); presun_kurzor(zacx+1+aktualny,zacy); zapni_kurzor(); switch(kl=key()) { case ESC:vypni_kurzor();return FALSE; case ENTER:koniec=1; default:if(kl>=' ' && kl<=255) { *retazec='\0'; zaciatocny=0; aktualny=0; dlzka=0; } } tlac_riadkovy_editor(zacx,zacy,sirka,zaciatocny,attr2,attr2,retazec); while(!koniec) { switch(kl) { case ESC:vypni_kurzor();return FALSE; case ENTER:vypni_kurzor();return TRUE; case BKSPC:if(aktualny+zaciatocny>0) { if(aktualny+zaciatocny<dlzka) for(i=zaciatocny+aktualny;i<dlzka;i++) retazec[i-1]=retazec[i]; retazec[--dlzka]='\0'; goto vlavo; } break; vpravo: case RIGHT:aktualny++; if(aktualny+zaciatocny>dlzka) aktualny--; else if(aktualny>sirka-2) { aktualny--; zaciatocny++; } break; vlavo: case LEFT: if(--aktualny<0) { aktualny++; if(--zaciatocny<0) zaciatocny++; } break; case HOME: aktualny=0; zaciatocny=0; break; case END: if(dlzka<sirka-2) { zaciatocny=0; aktualny=dlzka; } else { aktualny=sirka-2; zaciatocny=dlzka-aktualny; } break; case DEL: if(aktualny+zaciatocny<dlzka) { for(i=zaciatocny+aktualny;i<dlzka;i++) retazec[i]=retazec[i+1]; dlzka--; } break; default:if(kl>=' ' && kl<=255 && dlzka<maxdlzka) { if(zaciatocny+aktualny>=dlzka) { if ( (kl>='A') && (kl<='Z') ) kl=kl + (224-'A'); retazec[dlzka++]=kl; retazec[dlzka]='\0'; } else { for(i=dlzka;i>zaciatocny+aktualny;i--) retazec[i]=retazec[i-1]; if(dlzka<maxdlzka) dlzka++; retazec[dlzka]='\0'; retazec[zaciatocny+aktualny]=kl; } goto vpravo; } } tlac_riadkovy_editor(zacx,zacy,sirka,zaciatocny,attr2,attr2,retazec); presun_kurzor(zacx+1+aktualny,zacy); kl=key(); } vypni_kurzor(); return TRUE; } //************************************************************************// // RIADKOVY_EDITOR1 // // 30.10.1997 // //************************************************************************// int riadkovy_editor1(int zacx,int zacy,int sirka,int maxdlzka,unsigned char attr1, unsigned char attr2,char *retazec) { register int i; //pomocna int zaciatocny=0; // int aktualny=0; // int koniec=0; //koniec cyklu int kl; //klaves int dlzka; //aktualna dlzka retazca dlzka=strlen(retazec); if(dlzka<sirka-2) { zaciatocny=0; aktualny=dlzka; } else { aktualny=sirka-2; zaciatocny=dlzka-aktualny; } tlac_riadkovy_editor(zacx,zacy,sirka,zaciatocny,attr1,attr2,retazec); presun_kurzor(zacx+1+aktualny,zacy); zapni_kurzor(); switch(kl=key()) { case ESC: koniec=ESC;break; case ENTER:koniec=ENTER;break; case TAB: koniec=TAB;break; case UP: koniec=UP;break; case DOWN: koniec=DOWN;break; case F1 : koniec=F1;break; case F6: koniec=F6;break; default:if(kl>=' ' && kl<=255) { *retazec='\0'; zaciatocny=0; aktualny=0; dlzka=0; } } tlac_riadkovy_editor(zacx,zacy,sirka,zaciatocny,attr2,attr2,retazec); while(!koniec) { switch(kl) { case ESC: vypni_kurzor();return ESC; case ENTER:vypni_kurzor();return ENTER; case TAB: vypni_kurzor();return TAB; case UP: vypni_kurzor();return UP; case DOWN: vypni_kurzor();return DOWN; case F1 : vypni_kurzor();return F1; case F6 : vypni_kurzor();return F6; case BKSPC:if(aktualny+zaciatocny>0) { if(aktualny+zaciatocny<dlzka) for(i=zaciatocny+aktualny;i<dlzka;i++) retazec[i-1]=retazec[i]; retazec[--dlzka]='\0'; goto vlavo; } break; vpravo: case RIGHT:aktualny++; if(aktualny+zaciatocny>dlzka) aktualny--; else if(aktualny>sirka-2) { aktualny--; zaciatocny++; } break; vlavo: case LEFT: if(--aktualny<0) { aktualny++; if(--zaciatocny<0) zaciatocny++; } break; case HOME: aktualny=0; zaciatocny=0; break; case END: if(dlzka<sirka-2) { zaciatocny=0; aktualny=dlzka; } else { aktualny=sirka-2; zaciatocny=dlzka-aktualny; } break; case DEL: if(aktualny+zaciatocny<dlzka) { for(i=zaciatocny+aktualny;i<dlzka;i++) retazec[i]=retazec[i+1]; dlzka--; } break; default:if(kl>=' ' && kl<=255 && dlzka<maxdlzka) { if(zaciatocny+aktualny>=dlzka) { retazec[dlzka++]=kl; retazec[dlzka]='\0'; } else { for(i=dlzka;i>zaciatocny+aktualny;i--) retazec[i]=retazec[i-1]; if(dlzka<maxdlzka) dlzka++; retazec[dlzka]='\0'; retazec[zaciatocny+aktualny]=kl; } goto vpravo; } } tlac_riadkovy_editor(zacx,zacy,sirka,zaciatocny,attr2,attr2,retazec); presun_kurzor(zacx+1+aktualny,zacy); kl=key(); } vypni_kurzor(); return koniec; } //************************************************************************// // TLAC_RIADKOVY_EDITOR // // 30.10.1997 // //************************************************************************// int tlac_riadkovy_editor(int zacx,int zacy,int sirka,int zaciatocny,unsigned char attr1, unsigned char attr2,char *ret) { register int i=0; register int j=0; if(zaciatocny>0) tlac_znak(zacx,zacy,attr2,17); else tlac_znak(zacx,zacy,attr2,' '); while(zaciatocny-->0)ret++; for(i=0;i<sirka;i++) if(*ret=='\0') { for(j=i;j<sirka;j++) tlac_znak(zacx+j+1,zacy,attr2,' '); break; } else tlac_znak(zacx+i+1,zacy,attr1,*ret++); if(*ret!='\0') tlac_znak(zacx+sirka,zacy,attr2,16); else tlac_znak(zacx+sirka,zacy,attr2,' '); return i; } //************************************************************************// // TLAC_OBMEDZENY_RETAZEC // // 30.10.1997 // //************************************************************************// void tlac_obmedzeny_retazec(int zacx,int zacy,int sirka,unsigned char attr,char *ret) { register int i; if((i=strlen(ret))<sirka-2) tlac_riadkovy_editor(zacx,zacy,sirka,0,attr,attr,ret); else tlac_riadkovy_editor(zacx,zacy,sirka,i-sirka-2,attr,attr,ret); } /*---------------------------------END--------------------------------------*/