// predpisemkou1.cpp : main project file. #include "stdafx.h" using namespace System; using namespace System::Collections; using namespace System::IO; using namespace System::Xml::Serialization; public interface class Ivek { int HowOld(); }; public ref class Clovek : Ivek { public: property String^ Barva; property int Vek; Clovek() { this->Barva = "bílá"; this->Vek = 0; } Clovek(String^ Barva, int Vek) { this->Barva = Barva; this->Vek = Vek; } virtual int HowOld() { return this->Vek; } virtual String^ ToString() override { return Object::ToString() + " " + this->Barva + " " + this->Vek; } }; public ref class Zamestnanec : Clovek { public: property double Vydelek; Zamestnanec() : Clovek("bílá",0) { this->Vydelek = 0; } Zamestnanec(String^ Barva, int Vek, double Vydelek) : Clovek(Barva, Vek) { this->Vydelek = Vydelek; } virtual String^ ToString() override { return Object::ToString() + " " + this->Barva + " " + this->Vek + " " + this->Vydelek; } }; public ref class Slovnicek { private: property String^ Jazyky; public: Hashtable^ Tabulka; Slovnicek() { Tabulka = gcnew Hashtable; this->Jazyky = "Česko-anglický slovník"; } Slovnicek(String^ jazyky) { Tabulka = gcnew Hashtable; this->Jazyky = jazyky; } virtual String^ GetJazyky() { return this->Jazyky; } virtual void Pridat(String^ cesky, String^ cizacky) { try { this->Tabulka->Add(cesky, cizacky); } catch (Exception^) { Console::WriteLine("Klíčové slovo " + cesky + " již ve slovníku existuje."); } } virtual void VypisSlovnik() { DictionaryEntry^ Radek; int delka; int tabulatory; int i; String^ mezera; for each (Radek in this->Tabulka) { mezera = ""; delka = Radek->Key->ToString()->Length; tabulatory = 4 - delka / 8; for (i=1;i<=tabulatory;i++) mezera += "\t"; Console::WriteLine(Radek->Key + mezera + Radek->Value); } } virtual String^ Hledani(String^ slovo) { if (this->Tabulka->ContainsKey(slovo)) return safe_cast(this->Tabulka[slovo]); else return "Slovo nenalezeno :-(."; } }; public ref class DvojiceSlov { public: property String^ prvni; property String^ druhe; }; void UlozSlovnik(Slovnicek^ Slovnik) { DvojiceSlov^ dvojice = gcnew DvojiceSlov; DictionaryEntry^ Radek; XmlSerializer^ s = gcnew XmlSerializer(dvojice->GetType(), ""); //StreamWriter^ sw = File::CreateText("C:\\Documents and Settings\\Administrator\\Plocha\\" + Slovnik->GetJazyky() + ".xml"); StreamWriter^ sw = File::CreateText(Slovnik->GetJazyky() + ".xml"); for each (Radek in Slovnik->Tabulka) { dvojice->prvni = safe_cast(Radek->Key); dvojice->druhe = safe_cast(Radek->Value); s->Serialize(sw, dvojice); } sw->Close(); } void UlozSlovnikTxt(Slovnicek^ Slovnik) { DictionaryEntry^ Radek = gcnew DictionaryEntry; //String^ path = "C:\\Documents and Settings\\Administrator\\Plocha\\" + Slovnik->GetJazyky() + ".txt"; String^ path = Slovnik->GetJazyky() + ".txt"; FileInfo^ f = gcnew FileInfo(path); if (!f->Exists) { StreamWriter^ sw = f->CreateText(); try { for each (Radek in Slovnik->Tabulka) { sw->WriteLine(Radek->Key); sw->WriteLine(Radek->Value); } } finally { sw->Close(); } } } void NactiSlovnikTxt(Slovnicek^ Slovnik) { DvojiceSlov^ dvojice = gcnew DvojiceSlov; //String^ path = "C:\\Documents and Settings\\Administrator\\Plocha\\" + Slovnik->GetJazyky() + ".txt"; String^ path = Slovnik->GetJazyky() + ".txt"; //Relativni cesta FileInfo^ f = gcnew FileInfo(path); StreamReader^ sr; if (f->Exists) { try { sr = f->OpenText(); while (!sr->EndOfStream) { dvojice->prvni = sr->ReadLine(); dvojice->druhe = sr->ReadLine(); Slovnik->Pridat(dvojice->prvni,dvojice->druhe); } } finally { sr->Close(); } } }; public ref class Komplex { public: property double x; property double y; Komplex() { this->x = 0; this->y = 0; } Komplex(double x, double y) { this->x = x; this->y = y; } virtual double GetVzdalenostOdPocatku() { return Math::Sqrt(this->x*this->x + this->y*this->y); } virtual double GetVzdalenostOdPocatku(double x, double y) { return Math::Sqrt(x*x + y*y); } virtual String^ ToString() override { if (this->y >= 0) return this->x + " + " + this->y + "i"; else return this->x + " - " + Math::Abs(this->y) + "i"; } virtual double VzdalenostOdBodu(double x, double y) { double vzdx = this->x - x; double vzdy = this->y - y; return GetVzdalenostOdPocatku(vzdx,vzdy); } virtual double VzdalenostOdBodu(Komplex^ DruhyBod) { double vzdx = this->x - DruhyBod->x; double vzdy = this->y - DruhyBod->y; return GetVzdalenostOdPocatku(vzdx,vzdy); } }; int main(array ^args) { String^ s = L"Vlastimil Dobrota: "; int a = 10; String^ r = s + a; Console::WriteLine(r + a); Clovek^ Petr = gcnew Clovek("černá",20); Console::WriteLine(Petr); Console::WriteLine(Petr->ToString()); Zamestnanec^ Jarda = gcnew Zamestnanec("šedivá",21,2100); Console::WriteLine(Jarda); Zamestnanec^ KiLLeR = gcnew Zamestnanec("bílá",20,21000); Console::WriteLine(KiLLeR); ArrayList^ Otroci = gcnew ArrayList; Otroci->Add(Jarda); Otroci->Add(KiLLeR); double PrumernyVek; double SumaStari = 0; int PocetOtroku = 0; for each (Clovek^ nekdo in Otroci) { SumaStari += nekdo->Vek; PocetOtroku++; } PrumernyVek = SumaStari / PocetOtroku; Console::WriteLine("Průměrný věk otroků je: " + PrumernyVek); double NaVyplaty = 0; for each (Zamestnanec^ Zam in Otroci) { NaVyplaty += Zam->Vydelek; } Console::WriteLine(NaVyplaty); String^ veta = "vincenzo.servegame.com je ten nejlepsi server na svete."; Console::WriteLine(veta); veta = veta->Insert(8,".hacker"); Console::WriteLine(veta); veta = " " + veta + " "; Console::WriteLine(veta); veta = veta->Trim(); Console::WriteLine(veta); int mezera = veta->IndexOf(" "); String^ slovo = veta->Substring(0,mezera); Console::WriteLine(slovo); for each (int c in veta) //Tenhle blok se chova divne { char d = safe_cast(c); Console::Write(c); } Console::WriteLine(); /* ABY TO NEZDRZOVALO PRI TESTOVANI - PLNE FUNKCNI! int cis1; try { cis1 = int::Parse(Console::ReadLine()); } catch (Exception^) { Console::WriteLine("Chyba"); } double cis2; try { cis2 = safe_cast(cis1); } catch (Exception^) { Console::WriteLine("Chyba"); } Console::WriteLine(cis1 + " " + cis2); */ Zamestnanec^ Domi = gcnew Zamestnanec("bílá", 20, 15000); Console::WriteLine(Domi->ToString()); Clovek^ Vojta = gcnew Clovek; Vojta = safe_cast(Domi); Console::WriteLine(Vojta->ToString()); Console::WriteLine(Vojta->Barva + " " + Vojta->Vek); Clovek^ Bourec = gcnew Clovek; Bourec->Barva = Vojta->Barva; Bourec->Vek = Vojta->Vek; Console::WriteLine(Bourec->ToString()); Zamestnanec^ Unknown = safe_cast(Domi); Console::WriteLine(Domi->ToString()); String^ PocetMonitoru = "asi 3"; int Monitoru; bool ok = false; while (ok != true) { try { Monitoru = int::Parse(PocetMonitoru); ok = true; } catch (Exception^) { PocetMonitoru = PocetMonitoru->Substring(1); } } Console::WriteLine(Monitoru); Slovnicek^ CjAj = gcnew Slovnicek("Česko - Anglický VincEnzův slovník"); Console::WriteLine(CjAj->GetJazyky()); //Console::WriteLine(CjAj->Jazyky); //Nejde, protoze jsem v tride Slovnicek dal property Jazyky do private String^ Auto1 = "auto"; String^ Auto2 = "car"; CjAj->Pridat(Auto1, Auto2); CjAj->Pridat("kolo","bicycle"); CjAj->Pridat("počítač","computer"); CjAj->Pridat("tiskárna","printer"); CjAj->Pridat("konektivita","connectivity"); CjAj->Pridat("Co to do hajzlu bylo?!","What the fuck?!"); CjAj->VypisSlovnik(); Console::WriteLine(L"Co chcete najít?"); String^ hledani = "kolo"; // Console::ReadLine(); // Aby to neotravovalo pri ladeni Console::WriteLine(CjAj->Hledani(hledani)); UlozSlovnik(CjAj); UlozSlovnikTxt(CjAj); Slovnicek^ NovyCjAj = gcnew Slovnicek("Nový slovník ČJ-AJ"); NactiSlovnikTxt(NovyCjAj); NovyCjAj->VypisSlovnik(); Console::WriteLine(L"Co chcete najít v novém slovníku?"); hledani = "dva"; // Console::ReadLine(); // Aby to neotravovalo pri ladeni Console::WriteLine(NovyCjAj->Hledani(hledani)); Komplex^ i = gcnew Komplex(-1,3); Komplex^ j = gcnew Komplex(0,-13.8); Komplex^ k = gcnew Komplex(-5.55,100.5); Console::WriteLine(i); Console::WriteLine(j); Console::WriteLine(k); Console::WriteLine(i->ToString()); Console::WriteLine(i->GetVzdalenostOdPocatku()); Console::WriteLine(i->VzdalenostOdBodu(10,10)); Console::WriteLine(i->GetVzdalenostOdPocatku(11,7)); Console::WriteLine(i->GetVzdalenostOdPocatku(-11,-7)); Console::WriteLine(j->VzdalenostOdBodu(k)); ConsoleKeyInfo zn; System::Int16 odsazeni; enum Moznosti : int { Vypnuto, Zapnuto }; Moznosti vyber; do { Console::WriteLine(L"Co teď? (p) Pokračovat (s) Skončit\n"); zn = Console::ReadKey(); Random^ nahoda = gcnew Random(); odsazeni = nahoda->Next() % 5; for (int i=0;i<=odsazeni;i++) { if (i == 0) { Console::WriteLine(); continue; } else { Console::Write(L"\t"); Console::Write(i); Console::WriteLine(L". vložený řádeček :-)."); } } switch ((int)zn.KeyChar) { case 'p' : vyber = Zapnuto; break; case 's' : vyber = Vypnuto; break; } } while (vyber); return 0; }