Prüfung Informatik D-MATH/D-PHYS 23.1.2008 Öº ÖÒ Đ ÖØÒ Ö ÈÖÓ º ÂÙÖ ÀÖÓÑ ÓÚ Lösung. Aufgabe 1. µ 1 + 7 / 2 1 + 3 4 µ x == 1 1 / (x - 1) < 1 1 == 1 1 / (x - 1) < 1 true 1 / (x - 1) < 1 true µ!(1 && x) + 1!(true && x) + 1!(true && 1) + 1!(true && true) + 1!true + 1 false + 1 0 + 1 1 Punktvergabe. ÈÙÒ Ø ĐÙÖ Ö Ì Ð Ù Òº Å ÒÙ ½ ÈÙÒ Ø ĐÙÖ Ò Ð Ò Ò Û Ò Ö Øغ Å ÒÙ ĐÙÖ Ð Ò Ö ÙÐØ Øº Ï ÒÒ Ö Û Ò Ö ØØ ÒÙÖ Ù Ö Ù Û ÖØÙÒ Ö Î Ö Ð Ò Ø Ø ÒÒ ÒÒ Ö Û Ð Ò Û Ö Òº Ï ÒÒ Ó ÙÑ Ò ÃÓÒÚ Ö ÓÒ bool int Ó Ö ÙÑ ÖØ Ø ÒÒ Ø Ò Ò ÞÙ Ì Ð Ù µµº Ð Ò ÓÖع ÖÙ Ø Ú ÐÙ Ø ÓÒ Ò Ì Ð Ù µ Û Ö Ñ Ø Ñ ÒÙ ¾ ØÖ Øº
Aufgabe 2. µ ÈÖÓ Ð Ñ ØÖ ØØ Ö Ò ÚÓÒ 0 Ù º ÁÑ Ö Ø Ò Ö ÙÖ Ú Ò Ù ÖÙ ÓÒ Û Ö haesslich(0) Ù ÖÙ Ò Ð Ó ØÖ Ø Ò Û Ö Ò Ò Ò ÐÓ Ê ÙÖ ÓÒ Òº Ò ÑĐÓ Ð ÄĐÓ ÙÒ Ø 0 Ù Ð Đ Ð ÞÙ Ò Ö Ò bool haesslich (unsigned int n) { return (n == 0) (n == 1) (n % 2 == 0) && haesslich (n / 2) (n % 3 == 0) && haesslich (n / 3) (n % 5 == 0) && haesslich (n / 5); µ ÁÑ Û ÒØÐ Ò Ø Ò Ð Đ Ð Û ÒÒ Ö ÈÖ Ñ ØÓÖÞ ÖÐ ÙÒ ÒÙÖ 2¹ Ò 3¹ Ò ÙÒ 5¹ Ò ÒØ Đ Ðغ Ù Đ ØÞÐÐ Ø Ù 0 ÙÒ 1 Đ Ð º ÓÐ Ò ÈÓ ØÓÒ Ø ÓÒ Ö Ø º // POST: true g.d.w. die Eingabe entweder 0 oder 1 ist, oder eine // Zahl,deren Primfaktorzerlegung nur aus 2-en, 3-en und // 5-en besteht. Punktvergabe. Â Û Ð ½¼ ÈÙÒ Ø ĐÙÖ Ò Ì Ð Ù Ò µ ÙÒ µº µ ÈÙÒ Ø ĐÙÖ Ò Ð Ö Ø Ò Ð Ê ÙÖ ÓÒ º ÈÙÒ Ø ĐÙÖ ÄĐÓ ÙÒ º ÈÙÒ Ø ÞĐÙ ĐÙÖ Ð Ð Ö Þº º Ù Đ ÞÙÛ Ð Ò Ò Ö ØÙÖÒ Ø Ø Ñ Òص ÙÒ Ð Ö Ø ÃÓÖÖ ØÙÖ Ò Þº º Ò ÐÐ n == 1 Ò Ø Ñ Ö Ö Òµº µ ÈÙ Ø ĐÙÖ Ù Ð Ò Ö Ò ÈÖ Ñ ØÓÖÞ ÖÐ ÙÒ ÒÙÖ Ù 2¹ Ò 3¹ Ò ÙÒ 5¹ Ò Ø Øº Å Ü Ñ Ð 3 ÈÙÒ Ø ĐÙÖ Ù Ò Û Ð Ò ÈÓØ ÒÞ Ò ÚÓÒ 2 3 Ó Ö 5 Ò Ó Ö Ð Ò Ö Ò ÈÖ Ñ ØÓÖÞ ÖÐ ÙÒ Ò ÍÒØ ÖÑ Ò ÚÓÒ 2 3 5 Ø º Ù Đ ØÞÐ Ø ÈÙÒ Ø ĐÙÖ Ö Ø Ù ÞĐÙ Ð Ö 0 ÙÒ Ö 1º Aufgabe 3. Ò ÅĐÓ Ð Ø Ø ÙÒ Ø ÓÒ gcd Ù Ö ÎÓÖÐ ÙÒ ÞÙ Ú ÖÛ Ò Òº // POST: Der Rueckgabewert ist der groesste gemeinsame Teiler // von a und b. unsigned int gcd(unsigned int a, unsigned int b) { if (b == 0) return a; return gcd(b, a % b); // b!= 0
// PRE: a > 0, b > 0 // POST: Der Rueckgabewert ist true g.d.w. a und b teilerfremd sind. bool teilerfremd(unsigned int a, unsigned int b) { return gcd(a, b) == 1; Ò Ò Ö ÅĐÓ Ð Ø Ø Ò ØĐÙÖÐ Ò ÐÐ Ì Ð Ö ÞÙÖ Ð Ò Ö Ò Ö Ò Ð Ò Ù ÞÙÔÖÓ Ö Òº // PRE: a > 0, b > 0 // POST: Der Rueckgabewert ist true g.d.w. a und b teilerfremd sind. bool teilerfremd(unsigned int a, unsigned int b) { int smaller; if (a <= b) smaller = a; else smaller = b; for (unsigned int i = 2; i <= smaller; ++i) { if (a % i == 0 && b % i == 0) return false; return true; Punktvergabe. ÁÒ ÑØ ¾¼ ÈÙÒ Ø ĐÙÖ Ò ÚÓÐÐ ØĐ Ò ÓÖÖ Ø ÄĐÓ ÙÒ º ÐÐ Ñ Ò gcd ÄĐÓ ÙÒ Ú ÖÛ Ò Ø ÙÒ Ø ÓÒ gcd ÐÐ Ö Ò Ò Ø Ò Ö Ø Ø Ò ¹ ÑØ ÈÙÒ Ø º Ò ÓÒ Ø Ò Ø ÞĐÙ ĐÙÖ Ð Öº À Ö Ò ÙÒ Đ Ö Ù ÑÑ Ò¹ Ø ÐÐÙÒ Å ÒÙ ½ ĐÙÖ Ò ËÝÒØ Ü Ð Ö Ñ ÞÛ Ø Ò Ø Ö Ö Ø Ø ÒÓ Ö µº Ñ Ø Ò ÞÙÑ Ô Ð Ò Ð Ò Ë Ñ ÓÐÓÒ Ó Ö Ò Ð Ò Ö Ø Ò Ó Ö Đ ÒÐ Ñ Òغ Å ÒÙ ĐÙÖ Ð ÁÒ Ø Ð ÖÙÒ Ó Ö ÖÙ Ò ÙÒ Ö Ë Ð º Å ÒÙ ¾ Û ÒÒ Ì Ð Ö ÞÙ Ö ÖĐÓ Ö Ò Ö Ò Ð Ò Ù Ø Û Ö º Å ÒÙ ĐÙÖ Ð return ÒÛ ÙÒ Òº Å ÒÙ ¹½¼ ÈÙÒ Ø ÞÙ ĐÙÖ Ð Ö Ø ÁÑÔÐ Ñ ÒØ Ø ÓÒ ÚÓÒ gcdº Å ÒÙ ¾ ĐÙÖ Ò Ð Ö Ö Î ÖÛ Ò ÙÒ Ö ÙÒ Ø ÓÒ gcd Ö Ô Ø Ú Ö ÒÛ Ò ÙÒ Ö ÑÓ ÙÐÓ Ì Ø º
Aufgabe 4. Ù Ò Ø ÐÐÙÒ Ö Ø Ò ÈÖÓ Ð Ñ Ø ÐÐÙÒ ÚÓÒ UNIV Ù ÈÖÓ Ð Ñ Ø ÐÐÙÒ ÚÓÒ HALT ÞÙ Ö ÙÞ Ö Òº Ø Ò Ò Ð ÓÖ Ø ÑÙ HALT Û ÒÒ Ò Ð ÓÖ Ø ÑÙ UNIV Ö Ø ÐÐ Ò Ò Ò ÖØ ÞÙ Ú Ö Ò Ù¹ Ð Ò Ø Ñ Ø Ò Ñ Ö Ñ Û Ò Ð ÙÒ ½º UNIV P Trigger Trigger P e SIMUL P(e) JA NEIN JA P HALT JA NEIN e e NEIN Ð ÙÒ ½ Ê Ù Ø ÓÒ ÚÓÒ UNIV Ù HALTº Ð Ñ ÒØ Ò Ö Ð ÙÒ Ò Û ÓÐ Ø ÞÙ Ð Òº Ò Û ÃĐ Ø Ò Þ Ò Ø Ò Ò Ð ÓÖ Ø ÑÙ Ø Û Ö ĐÓÒÒ Ò Ù Ö Ò Ö ÐÓ Ø ÖÑ Ò Öغ Ò Û ÖÞ ÃĐ Ø Ò Ò Ò Ø ÔÓØ ÒØ ÐÐ Đ ÖÐ Û Ð Ö Ò Ú Ö ÓÖ Ò Ò ÒÛ ÙÒ Ò ÙÒ Ò Ð Ð Ò Ð Ù Ò ĐÓÒÒØ Òº Û Ö ÚÓÒ Ù Ò HALT Ø Ø Ò ÃĐ Ø Ò Ð Ö Ø ÙÒ Ø ÓÒ ÖØ Ô Ö ÎÓÖ Ù ØÞÙÒ º Æ Ø ¹ Ó ÃĐ Ø Ò ÚÓÒ UNIV Û Ð Ö Ù ÞÙ ĐÙÐÐ Ò Ðغ Ñ Ð Ò Ò Ê Ò ÃĐ Ø Ò ÓÑÑØ Ö Ð ÓÖ Ø ÑÙ Û Ð Ò Ò Òº Ñ Ö Ø Ò Ê Ò Ø Ö Ò Ù JA Ó Ö NEINµ º ÃĐ Ø Ò Ñ Ø SIMUL Þ Ò Ø Ø ÐĐ Ø Ò ÈÖÓ Ö ÑÑ Û Ð Ð Ò ¹ ÓÑÑØ Ù Ò Ö Ò Û Ð Ò ÐÐ Ð Ò ÓÑÑØ Ð Ù Ò ß Ø ÑÙÐ ÖØ ÈÖÓ Ö ÑÑ Ù Ò Ö Ò º ÙÑ Ò Û ÖÞ ÃĐ Ø Ò Ò ÐØ ÑĐÙ Ò Û Ö ÞÙ Ö Ø Ñ Ø Ñ HALT Ð ÓÖ Ø ÑÙ ĐÙ ÖÔÖĐÙ Ò Ó Ò ÚÓÒ UNIV P ÙÒ eµ Ò ÈÖÓ Ö Ñѹ Ò ÃÓÑ Ò Ø ÓÒ Ö Ø ÐÐØ Đ Ðغ Ï ÒÒ ÒØÛÓÖØ NEIN Ø ÒÒ Û Ò Û Ö ÓÒ P Ò e Ò Ø ¹ Þ ÔØ Ö Ò Û Ö ÙÒ UNIV ÒÒ Ò ÐÐ NEIN Ù Òº Ï ÒÒ ÒØÛÓÖØ Ó JA Ð ÙØ Ø ÒÒ ÐØ Ò Û Ö SIMUL Ò ÙÑ Ù ÚÓÒ P Ù e ÞÙ Ö ÐØ Ò Û Ð Û Ö ÒÒ Ð Ð Ù ÚÓÒ UNIV Û Ø ÖÐ Ø Ò ĐÓÒÒ Òº Ò Trigger Ð Ñ ÒØ ÓÖ Ò Ð Ó Ö ĐÙÖ SIMUL ÒÙÖ Ð Ò Ø Û Ö Û ÒÒ Ö Ø ÐÐØ Ø P Ù e Û Ö Ð Đ Ðغ Ù ÒÒ Ù Ñ Ø Ò Ö ÒØ ÔÖ Ò Ò Ö ÙÒ Ó Ò Ð µ ÐĐÓ Ø Û Ö¹ Òº
Punktvergabe. ÁÒ ÑØ ½ ÈÙÒ Ø º Å Ö Ð ÈÙÒ Ø ÓÐÐØ Ò ÒÙÖ ÖØ ÐØ Û Ö Ò Û ÒÒ ÐÐ Û ÒØÐ Ò Ð Ñ ÒØ HALT Ð Ù Ð Ò ¹ ÐÓ ÓÖÖ Ø Ò¹ ÙÒ Ù ¹ Ò SIMUL Ö Ø Ê ØÙÒ Ö Ê Ù Ø ÓÒµ ÚÓÖ Ò Ò Ò º Ò ÓÒ Ø Ò Ø Ò Ù ÈÙÒ Ø Ú Ö Ò Ò Ñ ÖÓ Ò ÉÙ ÖÚ Ö Ð ÒÓ ØÞÙÐ Òº Aufgabe 5. µ Ö Ï ÖØ Ö Î Ö Ð Ò two Ò Ö Ö Ø Ò Ô Ö Ë Ð Ò ÙÖ ÐĐ Ù ÒØÛ ÐØ Û ÓРغ Ë Ð Ò ÙÖ Ò two Þ Ñ Ð two ÒĐ Ö ¼ ½ ½º¼ ½ ½º ½º½ ¾ ½º ½º½½ ½º ½º½½½ ½º ½º½½½½ º º Ø ÓÐ Ò ÒÓ ÒĐÙ Ò Ø Ò Ö Å ÒØ Ö Î Ö Ð Òtwo ÚÓÖ Ò¹ Ò Ò ÓÑÑØ Ö ÒĐ Ö Ò Ö Ø ÐÐÙÒ Ò Ñ Ë Ð Ò ÙÖ Ò ÒØ Ò Ò 1 ÞÙº µ ÓÖÖ Ø ÒØÛÓÖØ Ø µ Ø Ñ Ò Û Ö 0 Ù Òº ÍÑ ÞÙ ÖĐÙÒ Ò ÑÙ Ñ Ò Ú Ö ÒÛĐ ÖØ Ò Û Ò Ö ÒĐ Ö Ò Ö Ø ÐÐÙÒ Øº ÁÒ Ö Ù µ Ò Ë Ò Î Ö Ð two Ò Ñ Ë Ð Ò ÙÖ Ò Ò 1 Ñ Ö Ô ÖÒ ÑÙ º Ö ÌÝÔ float Ø Ò Á Ò Å ÒØ Ñ Ø ¾ Ø ÞÙÖ Î Ö ĐÙ ÙÒ º Ù ÖÙÒ Ö ÒÓÖÑ Ð ÖØ Ò Ö Ø ÐÐÙÒ ÒÒ Î Ö Ð two Ð Ó ÙÒ Ñ Ø Ñ ¾ º Ë Ð Ò ÙÖ Ò ÐÐ ËØ ÐÐ Ò Ô ÖÒº Ò ÑÙ ÖÙÒ Ø Û Ö Òº Ö Ü Ø Ï ÖØ Ö ÔÔÖÓÜ Ñ Ø ÓÒ Ò Ñ ¾ º ÙÖ Ò Ø Ò Ù ÞÛ Ò Ñ ¾ º ÙÖ Ò ÙÒ Ö ÞÙ ÔÔÖÓÜ Ñ Ö Ò Ò 2º ÖÓÙÒ ¹ØÓ¹ Ú Ò Ë Ñ Ò Û Ò Ø Û Ö Û Ö Ò Ó Ò ÞÙÖ 2 ÖÙÒ Øº Ò Đ Ò ÖØ Ò Ö Î Ö Ð Òtwo Ò Ø Ñ Ö Ò ÐÐ Ò ÓÐ Ò Ò Ë Ð ¹ Ò ÙÖ Đ Ò Ò Ò ÑÑ Ö Ð Ò Ö Û Ö Ò Ö ØÖ ÞÙ ÖØ Û Ö º Ö Ø Ú Ì ÖÑ Û Ö Û Ð Ó Ð Û Ö ÖÙÒ Ø ÙÑ Ò Ò ÈÐ ØÞ¹ Ú Ö Đ ÐØÒ ÞÙ Ö Òº Ø Ñ Ò Ø Î Ö Ð two Ü Ø Ò Ï ÖØ 2 ÙÒ Ù Ø ÓÑ Ø Ü Ø 0º º Punktvergabe. Â Û Ð ½¼ ÈÙÒ Ø ĐÙÖ µ ÙÒ µº µ ½¼ ÈÙÒ Ø Ò Ñ ÐÐ Ñ Ò Ò ĐÙÖ Ò Ø Ò Ö Ø Ë Ñ Ò 1 Ñ Ö Ò Ñ Ë Ð Ò ÙÖ Ò µ ÞÙ Ú Ö Òº ÒØ ÔÖ Ò ÞĐÙ ĐÙÖ
Ð Ö Ó Ö Ø ÐÛ Ð Ë Ñ º Å ÒÙ ÈÙÒ Ø Û ÒÒ Ò Î Ö ÙÒ Ä Ù Ò Ü i غ µ Ö Ø ÖĐÙÒ ÙÒ Ø ÈÙÒ Ø Ö Ø ÒØÛÓÖØ ÈÙÒ Ø º Òع ÛÓÖØ µ Ø Ñ Ø ½ ÈÙÒ Ø ÞÙ Û ÖØ Ò ÔÐÙ Ú ÒØÙ ÐÐ Ù ØÞÔÙÒ Ø Ù Ö ¹ ÖĐÙÒ ÙÒ Ú ÐÐ Ø Ò Ì Ð ÚÓÒ Ö Ø µº ÒØÛÓÖØ µ Ø Ñ Ø ¼ ÈÙÒ Ø Ò ÞÙ Û ÖØ Ò ÔÐÙ Ú ÒØÙ ÐÐ Ù ØÞÔÙÒ Ø Ù Ö ÖĐÙÒ ÙÒ º Aufgabe 6. Ì Ð µ µ ÙÒ µ Ö Ù Ø ÐÐÙÒ Ò Ò Ö ÓÐ Ò Ò ÁÑÔÐ Ñ Ò¹ Ø Ø ÓÒ ÚÓÖ Ò Òº ÁÑÔÐ Ñ ÒØ Ø ÓÒ Ú ÖÛ Ò Ø Ò Ð Öº ÖÛĐ ÒØ ÓÐ Ò ÁÑÔÐ Ñ ÒØ Ø ÓÒ Û Ø Ñ Ñ Ö Ð ÖØ Ð Ò Ö Ù Ò Ø ÐÐÙÒ ÓÖ ÖØ Û Öº ÒØ ÔÖ Ò Ò ÈÙÒ Ø ÛÙÖ Ò ÒÙÖ ĐÙÖ Ð Ö Ø ÓÒ Ö Ø ÒÑ Ø Ð Ö ĐÙÖ Ò ÃÓÒ ØÖÙ ØÓÖ ÙÒ ĐÙÖ ÙÒ Ø ÓÒ gewonnen ÖØ Ðغ #include <iostream> class TicTacToe { private: // Semantik fuer Spielerspeicherung: // 1 bedeutet Spieler 1 // -1 bedeutet Spieler 2 // alles andere ist spielerneutral int feld1; int feld2; int feld3; int feld4; int feld5; int feld6; int feld7; int feld8; int feld9; int spieler; private: // Ausgabe des Spielersymbols char symbol(int a) const { if (a == 1) return x ; if (a == -1) return o ; return ;
public: // Klassenkonstruktor, alles Null-initialisiert TicTacToe() : feld1(0), feld2(0), feld3(0), feld4(0), feld5(0), feld6(0), feld7(0), feld8(0), feld9(0), spieler(1) { // POST: Rueckgabewert ist der aktuelle Spieler, der in // der Klasse gespeichert wird. int aktuellerspieler() const { return spieler; // POST: true g.d.w. das entsprechende Feld noch leer ist. bool leeresfeld(unsigned int feld) const { switch (feld) { case 1: return feld1 == 0; case 2: return feld2 == 0; case 3: return feld3 == 0; case 4: return feld4 == 0; case 5: return feld5 == 0; case 6: return feld6 == 0; case 7: return feld7 == 0; case 8: return feld8 == 0; case 9: return feld9 == 0; default: return false; // PRE: spieler in {1,-1, feld ist eines der unbesetzten // Felder // POST: Das entsprechende Symbol ist gesetzt und aktuelle // Spieler hat gewechselt. void setzezug(int spieler, unsigned int feld) { switch (feld) { case 1: feld1 = spieler; case 2: feld2 = spieler;
case 3: feld3 = spieler; case 4: feld4 = spieler; case 5: feld5 = spieler; case 6: feld6 = spieler; case 7: feld7 = spieler; case 8: feld8 = spieler; case 9: feld9 = spieler; this->spieler *= -1; // PRE: Das Spiel befindet sich in einem gueltigen Zustand. // POST: true falls das Spielbrett voll ist, false sonst. bool brettvoll() const { for (unsigned int i = 1; i < 10; ++i) { if (leeresfeld(i)) return false; return true; // POST: 1 wenn a positiv oder Null, -1 wenn a negativ int vorzeichen(int a) const { if (a >= 0) return 1; else return -1; // PRE: Das Spiel befindet sich in einem gueltigen Zustand. // POST: Die Rueckgabe ist 1 falls Spieler 1 gewonnen hat, // -1 falls Spieler 2 gewonnen hat und // 0 falls keine Aussage getroffen werden kann. int gewonnen() const { int temp; temp = feld1 + feld2 + feld3; temp = feld4 + feld5 + feld6;
temp = feld7 + feld8 + feld9; temp = feld1 + feld4 + feld7; temp = feld2 + feld5 + feld8; temp = feld3 + feld6 + feld9; temp = feld1 + feld5 + feld9; temp = feld7 + feld5 + feld3; return 0; // PRE: Die Datenmitglieder haben gueltige Werte // POST: Das Spielbrett wird ausgegeben. void druckebrett() const { std::cout << symbol(feld1) << " " << symbol(feld2) << " " << symbol(feld3) << "\n" << "---------\n" << symbol(feld4) << " " << symbol(feld5) << " " << symbol(feld6) << "\n" << "---------\n" << symbol(feld7) << " " << symbol(feld8) << " " << symbol(feld9) << "\n"; ; int main() { TicTacToe spiel = TicTacToe(); int naechsterzug = 0; std::cout << "Das Brett sieht so aus; die Felder sind von"; std::cout << "1 bis 9 nummeriert:\n"; std::cout << "1" << " " << "2" << " " << "3" << "\n" << "---------\n" << "4" << " " << "5" << " " << "6" << "\n" << "---------\n" <<
"7" << " " << "8" << " " << "9" << "\n"; std::cout << "Das Spiel geht los...\n\n"; while (spiel.gewonnen() == 0 &&!spiel.brettvoll()) { spiel.druckebrett(); std::cout << "Gibt den Zug fuer Spieler "; std::cout << spiel.aktuellerspieler() << " ein\n"; std::cin >> naechsterzug; if (spiel.leeresfeld(naechsterzug)) { spiel.setzezug(spiel.aktuellerspieler(), naechsterzug); else { std::cout << "Ein Fehler ist aufgetreten. Bitte noch einmal...\n"; std::cout << "Game over!\n" << "Der Spieler "; std::cout << spiel.gewonnen() << " hat gewonnen.\n"; spiel.druckebrett(); Punktvergabe. Â Û Ð ÈÙÒ Ø ĐÙÖ Ö Ì Ð µ µ ÙÒ µº ÄĐÓ ÙÒ Ò Ñ Ø Ó Ö Ó Ò Ð Ö Ò Ð ÞÙ Û ÖØ Òº µ ÈÙÒ Ø ĐÙÖ Ò Ø Ø ÒÑ Ø Ð Öº ÈÙÒ Ø ĐÙÖ ÒÒÚÓÐÐ Ë Ñ ÒØ º Òع ÔÖ Ò ÞĐÙ ĐÙÖ ÍÒÞÙÐĐ Ò Ð Ø Ò Þº º Ñ ÒÙ ½ ĐÙÖ Ð Ò ØÙ ÐÐ Ö ËÔ Ð Ö Ð Ñ ÒÙ ½ ĐÙÖ Ò ÝÒØ Ø Ò Ð Ö Ñ ÞÛ Ø Ò º º Ö Ö Ø Ø ÒÓ Ö µº µ ÈÙÒ Ø ĐÙÖ ÓÖÖ Ø Ò ÃÓÒ ØÖÙ ØÓÖº ÞĐÙ ĐÙÖ Ò ÝÒØ Ø Ò Ó Ö Ñ Ò¹ Ø Ò Ð Ö Ñ ÒÙ ½º ÁÒ Ø Ð ÖÙÒ Ò È Ö Ñ Ø ÖÐ Ø Ó Ö ÃĐÓÖÔ Ö ÃÓÒ¹ ØÖÙ ØÓÖ Ò Ð ÞÙ Û ÖØ Òº µ ¾ ÈÙÒ Ø ĐÙÖ ÒÒÚÓÐÐ ÈÓ ØÓÒ Ø ÓÒº ÈÙÒ Ø ĐÙÖ ÁÑÔÐ Ñ ÒØ Ø ÓÒ Ö ÙÒ Ø ÓÒº