Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.

Odkaz na výstup diff

public:specialni_vzory_tyden2 [2018/02/24 19:10] (aktuální)
Řádek 1: Řádek 1:
 +====== Objekty ======
  
 +<code cpp>
 +#include <​iostream>​
 +using namespace std;
 +
 +struct A 
 +
 + A() { cout << "​Konstruktor A" << endl; } 
 + ~A() { cout << "​Destruktor A" << endl; }
 +};
 +
 +struct B : public A
 +{
 + B() { cout << "​Konstruktor B" << endl; }
 + ~B() { cout << "​Destruktor B" << endl; }
 +};
 +
 +struct C : public A
 +{
 + C() { cout << "​Konstruktor C" << endl; }
 + ~C() { cout << "​Destruktor C" << endl; }
 +};
 +
 +struct D
 +{
 + D() { cout << "​Konstruktor D" << endl; }
 + ~D() { cout << "​Destruktor D" << endl; }
 +};
 +
 +struct E : public C, public D
 +{
 + E() { cout << "​Konstruktor E" << endl; }
 + ~E() { cout << "​Destruktor E" << endl; }
 +};
 +
 +struct F
 +{
 + F() { cout << "​Konstruktor F" << endl; }
 + ~F() { cout << "​Destruktor F" << endl; }
 +};
 +
 +struct G : public F, public D
 +{
 + G() { cout << "​Konstruktor G" << endl; }
 + ~G() { cout << "​Destruktor G" << endl; }
 +};
 +
 +struct H : public B, public F
 +{
 + H() { cout << "​Konstruktor H" << endl; }
 + ~H() { cout << "​Destruktor H" << endl; }
 +};
 +
 +int main()
 +{
 + A a1; 
 + {
 + B b1; 
 + C c1;
 + }
 + D d1; 
 + {
 + E e1; 
 + {
 + F f1; 
 + }
 + G g1;
 + }
 + H h1; 
 +}
 +</​code>​
 +
 +====== Left ======
 +
 +<code cpp>
 +#include <​iostream>​
 +#include <​cmath>​
 +using namespace std;
 +
 +void left(int cislo, int cifer)
 +{
 + /* tohle je jenom jedna z moznych variant */
 +
 + /* pocet cifer cisla - cmath */
 + int celkem = log10(cislo);​
 +
 + /* cislo vydelime tak aby nam zustal pouze potrebny pocet cifer */
 + for (int i = 0; i < celkem-cifer+1;​ i++)
 + {
 + cislo /= 10;
 + }
 +
 + /* vypiseme */
 + cout << cislo;
 +}
 +
 + 
 +void left(const char* text, int znaku)
 +{
 + int i = 0;
 + /* vypisujeme prislusny pocet znaku */
 + while (i < znaku && text[i] != '​\0'​)
 + {
 + cout << text[i];
 + i++;
 + }
 +}
 +
 +void left(double cislo, int cifer)
 +{
 + /* spravne bychom si meli overit, ze se nam vysledek vleze do int */
 + int celkem = log10(cislo);​
 + if (celkem >= cifer)
 + {
 + int vysledek = cislo;
 + for (int i = 0; i < celkem-cifer+1;​ i++)
 + {
 + vysledek /= 10;
 + }
 + cout << vysledek;
 + return;
 + }
 + else
 + {
 + for (int i = 0; i < cifer-celkem;​ i++)
 + {
 + cislo *= 10;
 + }
 + cout << static_cast<​int>​(cislo);​
 + return;
 + }
 +  
 +}
 +
 +int main()
 +{
 + int x = 12345; double y = 123.45; const char* z = "Hello World!";​
 +
 +
 + left(x,3); cout << endl;
 + left(y,2); cout << endl;
 + left(y,4); cout << endl;
 + left(z,4); cout << endl;
 +
 + left(x,​20);​ cout << endl;
 + left(y,8); cout << endl;
 + left(z,​20);​ cout << endl;
 +
 + return 0;
 +}
 +</​code>​
 +
 +====== Lod ======
 +
 +<code cpp>
 +#include <​iostream>​
 +#include <​string>​
 +using namespace std;
 +
 +class Lod
 +{
 + protected:
 + /* chraneny atribut (aby potomci mohli nastavit rychlost) */
 + string p_jmeno; ​   /**< jmeno lodi */
 +
 + double p_rychlost; /**< rychlost v km */
 +
 + /** Chraneny konstruktor (dostupny pouze z potomku) */
 + Lod(const char* jmeno) : p_jmeno(jmeno),​ p_rychlost(0.0) { }
 + /** Chraneny konstruktor (dostupny pouze z potomku) */
 + Lod(string jmeno) : p_jmeno(jmeno),​ p_rychlost(0.0) { }
 +
 + public:
 + double rychlost_km() const
 + { return p_rychlost; }
 +
 + double rychlost_uzly() const
 + { return p_rychlost/​1.852;​ }
 +
 + const char* jmeno_lodi() const
 + { return p_jmeno.c_str();​ } /* viz dokumentace tridy string */
 +};
 +
 +class Plachetnice : public Lod
 +{
 + bool p_plachty_nahore;​
 +
 + public:
 + Plachetnice(const char* jmeno) : Lod(jmeno), p_plachty_nahore(false) {}
 + Plachetnice(string jmeno) : Lod(jmeno), p_plachty_nahore(false) {}
 +
 +
 + void napnout_plachty()
 + {
 + p_plachty_nahore = true;
 + p_rychlost = 20;
 + }
 +
 + void stahnout_plachty()
 + {
 + p_plachty_nahore = false;
 + p_rychlost = 0;
 + }
 +
 + void vypis_info() const
 + {
 + cout << "​Plachetnice \'"​ << p_jmeno << "​\'​ prave ted ";
 + if (p_plachty_nahore)
 + {
 + cout << "pluje s napnutymi plachtami rychlosti " <<
 + rychlost_km() << " km/h coz je " << ​
 +                                rychlost_uzly() << " uzlu." << endl;
 + }
 + else
 + {
 + cout << "stoji se stazenymi plachtami."​ << endl;
 + }
 + }
 +};
 +
 +class MotorovyClun : public Lod 
 +{
 + int p_stupen;
 +
 + public:
 + MotorovyClun(const char* jmeno) : Lod(jmeno), p_stupen(0) {}
 + MotorovyClun(string jmeno) : Lod(jmeno), p_stupen(0) {}
 +
 + void nastav_rychlost(int stupen)
 + {
 + const double rychlosti[4] = { 0.0, 20.0, 30.0, 50.0 };
 + p_stupen = stupen;
 + p_rychlost = rychlosti[p_stupen];​
 + }
 +
 + void vypis_info() const
 + {
 + cout << "​Motorovy clun \'"​ << p_jmeno << "​\'​ prave ted ";
 + if (p_stupen > 0)
 + {
 + cout << "pluje na rychlostnim stupni " << ​
 +                                p_stupen << " rychlosti " <<
 + rychlost_km() << " km/h coz je " << ​
 +                                rychlost_uzly() << " uzlu." << endl;
 + }
 + else
 + {
 + cout << "stoji s vypnutym motorem."​ << endl;
 + }
 + }
 +
 +};
 +
 +int main()
 +{
 + MotorovyClun lod1("​Ponorka"​);​
 + Plachetnice ​ lod2("​Vlnka"​);​
 +
 + lod1.vypis_info();​
 + lod2.vypis_info();​
 +
 + lod1.nastav_rychlost(3);​
 + lod2.napnout_plachty();​
 +
 + lod1.vypis_info();​
 + lod2.vypis_info();​
 +
 + return 0;
 +}
 +</​code>​
QR Code
QR Code public:specialni_vzory_tyden2 (generated for current page)