200 likes | 382 Views
Programovacie techniky v C++. Letný semester 200 8 /0 9. Skúška 29 .5.2009. Ing. František Gyárfáš, PhD. Katedra aplikovanej informatiky. gyarfas@ii.fmph.uniba.sk http://www.ii.fmph.uniba.sk/~gyarfas/. Úloha 1.
E N D
Programovacie techniky v C++ Letný semester 2008/09 Skúška 29.5.2009 Ing. František Gyárfáš, PhD. Katedra aplikovanej informatiky gyarfas@ii.fmph.uniba.sk http://www.ii.fmph.uniba.sk/~gyarfas/
Úloha 1. Vytvorte triedu Slovnik, ktorá bude v sebe udržovať anglicko-slovenský slovník. Slovník bude obsahovať zoznam anglických slovíčok spolu so zoznamom ich slovenských ekvivalentov. Každé anglické slovíčko môže mať jeden a viac slovenských ekvivalentov. class Slovnik Pre jednoduchosť nepoužite slovenské znaky, ani veľké písmená .
Úloha 1. Trieda Slovnik bude mať jeden prázdny konštruktor. Do tejto triedy vytvorte metódu na vkladanie slov bool vlozSlovo(const char *vstup); ktorá načíta jeden riadok v tvare: <anglickeSlovo>=<slovSlovo>,<slovSlovo>, … Napr. glass=pohar,poharik,napoj V prípade, že anglické slovo je už v slovníku, metóda skontroluje, či sú už zadané slovenské ekvivalenty tiež v slovníku. Ak je niektorý ekvivalent nový, pridá sa do slovníku. Ak vstupný reťazec neobsahuje text na oboch stranách ‘=‘, metóda vlozSlovo vráti false, inak vráti true. Ďalej vytvorte tieto metódy: int pocetSlov();//počet anglických slov v slovníku
Úloha 1. #include <iostream> #include <fstream> #include <sstream> #include <vector> #include <set> using namespace std; #include "eval.h" #include "skuska290509.h" int main(){ bool result = true; Slovnik slovnik; result &= testEqual(0, slovnik.pocetSlov(), "Pocet slov"); slovnik.vlozSlovo("play=hra,divadlo,volny pohyb"); slovnik.vlozSlovo("playmate=spoluhrac,kamarat"); result &= testEqual(2, slovnik.pocetSlov(), "Pocet slov"); result &= testFalse(slovnik.vlozSlovo("true"), "Zly vstup"); slovnik.vlozSlovo("play=vola,tetelenie"); result &= testEqual(2, slovnik.pocetSlov(), "Pocet slov"); if(result) cout << endl << "All tests - OK"; else cout << endl << "All tests - FAILED"; getchar(); } #include <iostream> #include <string> using namespace std; #include "eval.h" #include "cvicenie6.h" int main(){ bool result = true; VELKE_CISLO a("0087264530"); VELKE_CISLO b("0003189787780012321312123123123213123232300"); VELKE_CISLO c("001eew9"), d("-1"), e; result &= testEqual("87264530", a.hodnota(), "Test hodnoty"); result &= testEqual("3189787780012321312123123123213123232300", b.hodnota(), "Test hodnoty"); result &= testEqual(c.hodnota(), d.hodnota(), "Test nespravneho vstupu"); result &= testEqual("0", e.hodnota(), "Test prazdnej hodnoty"); if(result) cout << endl << "All tests - OK"; else cout << endl << "All tests - FAILED"; getchar(); }
Úloha 2. Do triedy Slovnik vložte tieto metódy: string vratPreklad(string anglickeSlovo); //vráti zoznam //slovenských ekvivalentov //oddelených čiarkou //v poradí, v akom boli zadané bool skontrolujPreklad(string angl, string slov); //vracia true, ak slovenské slovo je prekladom //anglického //Vracia false, ak slovo nie je v slovniku, //alebo preklad nie je spravny
Úloha 2. int main() { . . . result &= testTrue(slovnik.skontrolujPreklad("play", "tetelenie"), "kontrola"); result &= testEqual("hra,divadlo,volny pohyb,vola,tetelenie", slovnik.vratPreklad("play"), "preklad"); result &= testTrue(slovnik.skontrolujPreklad("play", "volny pohyb"), "kontrola"); result &= testTrue(slovnik.skontrolujPreklad("playmate", "spoluhrac"), "kontrola"); result &= testFalse(slovnik.skontrolujPreklad("play", ""), "kontrola"); result &= testFalse(slovnik.skontrolujPreklad("", ""), "kontrola"); result &= testFalse(slovnik.skontrolujPreklad("girl", "dievca"), "kontrola"); if(result) cout << endl << "All tests - OK"; else cout << endl << "All tests - FAILED"; getchar(); } #include <iostream> #include <string> using namespace std; #include "eval.h" #include "cvicenie6.h" int main(){ bool result = true; VELKE_CISLO a("0087264530"); VELKE_CISLO b("0003189787780012321312123123123213123232300"); VELKE_CISLO c("001eew9"), d("-1"), e; result &= testEqual("87264530", a.hodnota(), "Test hodnoty"); result &= testEqual("3189787780012321312123123123213123232300", b.hodnota(), "Test hodnoty"); result &= testEqual(c.hodnota(), d.hodnota(), "Test nespravneho vstupu"); result &= testEqual("0", e.hodnota(), "Test prazdnej hodnoty"); if(result) cout << endl << "All tests - OK"; else cout << endl << "All tests - FAILED"; getchar(); }
Úloha 3. Pre triedu Slovnik vytvorte metódu: bool nacitajZoSuboru(string menoSuboru); //načíta slovník zo súboru. //Vráti false, ak načítanie zlyhá. Vytvorte dva súbory: slovnik.txt slovnik2.txt love=laska and=a fine=pokuta,poplatok,odstupne duel=suboj,spor purpose=zmysel,ucel,ciel play=volnost,hra lees=usadenina,kal,kvasnica glass=sklo,pohar glamour=kuzlo,povab tea=caj,cajovnik reason=dovod,zmysel glass=pohar,poharik,napoj tea=vyvar,olovrant yes=ano no=nie Načítajte oba súbory do triedy Slovnik .
Úloha 3. int main() { . . . slovnik.nacitajZoSuboru("slovnik.txt"); result &= testEqual(12, slovnik.pocetSlov(), "pocet hesiel"); result &= testEqual("laska", slovnik.vratPreklad("love"), "preklad"); result &= testEqual("pokuta,poplatok,odstupne", slovnik.vratPreklad("fine"), "preklad"); result &= testEqual("hra,divadlo,volny pohyb,vola,tetelenie,volnost", slovnik.vratPreklad("play"), "preklad"); result &= testTrue(slovnik.skontrolujPreklad("fine", "poplatok"), "fine,poplatok"); result &= testFalse(slovnik.skontrolujPreklad("glass", "napoj"), "glass,napoj"); slovnik.nacitajZoSuboru("slovnik2.txt"); result &= testEqual("sklo,pohar,poharik,napoj", slovnik.vratPreklad("glass"), "preklad"); result &= testTrue(slovnik.skontrolujPreklad("glass", "napoj"), "glass,pohar"); result &= testEqual(14, slovnik.pocetSlov(), "pocet hesiel"); if(result) cout << endl << "All tests - OK"; else cout << endl << "All tests - FAILED"; getchar(); }
Úloha 4. Pre triedu Slovnik vytvorte metódu: void načitajOpačnySlovnik(Slovnik &s);//Vytvorí //z existujúceho slovníka opačný slovník. //Z anglicko-slovenského slovníku //slovensko-anglický a naopak.
Úloha 4. int main() { . . . Slovnik opacnySlovnik; opacnySlovnik.nacitajOpacnySlovnik(slovnik); result &= testEqual(34, opacnySlovnik.pocetSlov(), "pocet hesiel"); result &= testTrue(opacnySlovnik.skontrolujPreklad("poharik", "glass"), "poharik=glass"); result &= testEqual("purpose,reason", opacnySlovnik.vratPreklad("zmysel"), "preklad"); result &= testEqual("play", opacnySlovnik.vratPreklad("tetelenie"), "preklad"); result &= testTrue(slovnik.skontrolujPreklad("play", "tetelenie"), "play=tetelenie"); if(result) cout << endl << "All tests - OK"; else cout << endl << "All tests - FAILED"; getchar(); }
Úloha 5. Pre triedu Slovnik vytvorte metódu: string usporiadanyZoznamSlov(); //Metóda vypíše všetky slová v slovníku //usporiadané podľa abecedy a oddelené čiarkou Pomôcka: Pre túto metódu môžete využiť kontajner set<string>.
Úloha 5. int main() { . . . result &= testEqual("and,duel,fine,glamour,glass,lees,love,no,play,playmate,purpose,reason,tea,yes", slovnik.usporiadanyZoznamSlov(), "zoznam slov"); result &= testNonEqual("and", slovnik.usporiadanyZoznamSlov(), "zoznam slov"); if(result) cout << endl << "All tests - OK"; else cout << endl << "All tests - FAILED"; getchar(); }
Všetky testy int main(){ bool result = true; Slovnik slovnik; result &= testEqual(0, slovnik.pocetSlov(), "Pocet slov"); slovnik.vlozSlovo("play=hra,divadlo,volny pohyb"); slovnik.vlozSlovo("playmate=spoluhrac,kamarat"); result &= testEqual(2, slovnik.pocetSlov(), "Pocet slov"); result &= testFalse(slovnik.vlozSlovo("true"), "Zly vstup"); slovnik.vlozSlovo("play=vola,tetelenie"); result &= testEqual(2, slovnik.pocetSlov(), "Pocet slov"); result &= testTrue(slovnik.skontrolujPreklad("play", "tetelenie"), "kontrola"); result &= testEqual("hra,divadlo,volny pohyb,vola,tetelenie", slovnik.vratPreklad("play"), "preklad"); result &= testTrue(slovnik.skontrolujPreklad("play", "volny pohyb"), "kontrola"); result &= testTrue(slovnik.skontrolujPreklad("playmate", "spoluhrac"), "kontrola"); result &= testFalse(slovnik.skontrolujPreklad("play", ""), "kontrola"); result &= testFalse(slovnik.skontrolujPreklad("", ""), "kontrola"); result &= testFalse(slovnik.skontrolujPreklad("girl", "dievca"), "kontrola"); . . .
Všetky testy . . . slovnik.nacitajZoSuboru("slovnik.txt"); result &= testEqual(12, slovnik.pocetSlov(), "pocet hesiel"); result &= testEqual("laska", slovnik.vratPreklad("love"), "preklad"); result &= testEqual("pokuta,poplatok,odstupne", slovnik.vratPreklad("fine"), "preklad"); result &= testEqual("hra,divadlo,volny pohyb,vola,tetelenie,volnost", slovnik.vratPreklad("play"), "preklad"); result &= testTrue(slovnik.skontrolujPreklad("fine", "poplatok"), "fine,poplatok"); result &= testFalse(slovnik.skontrolujPreklad("glass", "napoj"), "glass,napoj"); slovnik.nacitajZoSuboru("slovnik2.txt"); result &= testEqual("sklo,pohar,poharik,napoj", slovnik.vratPreklad("glass"), "preklad"); result &= testTrue(slovnik.skontrolujPreklad("glass", "napoj"), "glass,pohar"); result &= testEqual(14, slovnik.pocetSlov(), "pocet hesiel"); Slovnik opacnySlovnik; opacnySlovnik.nacitajOpacnySlovnik(slovnik); result &= testEqual(34, opacnySlovnik.pocetSlov(), "pocet hesiel"); result &= testTrue(opacnySlovnik.skontrolujPreklad("poharik", "glass"), "poharik=glass"); result &= testEqual("purpose,reason", opacnySlovnik.vratPreklad("zmysel"), "preklad"); result &= testEqual("play", opacnySlovnik.vratPreklad("tetelenie"), "preklad"); result &= testTrue(slovnik.skontrolujPreklad("play", "tetelenie"), "play=tetelenie"); result &= testEqual("and,duel,fine,glamour,glass,lees,love,no,play,playmate,purpose,reason,tea,yes", slovnik.usporiadanyZoznamSlov(), "zoznam slov"); result &= testNonEqual("and", slovnik.usporiadanyZoznamSlov(), "zoznam slov"); if(result) cout << endl << "All tests - OK"; else cout << endl << "All tests - FAILED"; getchar(); }