abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 05:11 | Zajímavý článek

    Obrovská poptávka po plynových turbínách zapříčinila, že datová centra začala používat v generátorech dodávajících energii pro provoz AI staré dobré proudové letecké motory, konvertované na plyn. Jejich výhodou je, že jsou menší, lehčí a lépe udržovatelné než jejich průmyslové protějšky. Proto jsou ideální pro dočasné nebo mobilní použití.

    karkar | Komentářů: 0
    včera 19:55 | Nová verze

    Typst byl vydán ve verzi 0.14. Jedná se o rozšiřitelný značkovací jazyk a překladač pro vytváření dokumentů včetně odborných textů s matematickými vzorci, diagramy či bibliografií.

    Ladislav Hagara | Komentářů: 0
    včera 13:33 | Bezpečnostní upozornění

    Specialisté společnosti ESET zaznamenali útočnou kampaň, která cílí na uživatele a uživatelky v Česku a na Slovensku. Útočníci po telefonu zmanipulují oběť ke stažení falešné aplikace údajně od České národní banky (ČNB) nebo Národní banky Slovenska (NBS), přiložení platební karty k telefonu a zadání PINu. Malware poté v reálném čase přenese data z karty útočníkovi, který je bezkontaktně zneužije u bankomatu nebo na platebním terminálu.

    Ladislav Hagara | Komentářů: 7
    včera 13:22 | Upozornění

    V Ubuntu 25.10 byl balíček základních nástrojů gnu-coreutils nahrazen balíčkem rust-coreutils se základními nástroji přepsanými do Rustu. Ukázalo se, že nový "date" znefunkčnil automatickou aktualizaci. Pro obnovu je nutno balíček rust-coreutils manuálně aktualizovat.

    Ladislav Hagara | Komentářů: 4
    včera 04:55 | Komunita

    VST 3 je nově pod licencí MIT. S verzí 3.8.0 proběhlo přelicencování zdrojových kódů z licencí "Proprietary Steinberg VST3 License" a "General Public License (GPL) Version 3". VST (Virtual Studio Technology, Wikipedie) je softwarové rozhraní pro komunikaci mezi hostitelským programem a zásuvnými moduly (pluginy), kde tyto moduly slouží ke generování a úpravě digitálního audio signálu.

    Ladislav Hagara | Komentářů: 1
    včera 03:22 | Nová verze

    Open source 3D herní a simulační engine Open 3D Engine (O3DE) byl vydán v nové verzi 25.10. Podrobný přehled novinek v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 0
    23.10. 20:11 | Komunita

    V Londýně probíhá dvoudenní Ubuntu Summit 25.10. Na programu je řada zajímavých přednášek. Zhlédnout je lze také na YouTube (23. 10. a 24. 10.).

    Ladislav Hagara | Komentářů: 0
    23.10. 13:22 | Nová verze

    Gemini CLI umožňuje používání AI Gemini přímo v terminálu. Vydána byla verze 0.10.0.

    Ladislav Hagara | Komentářů: 0
    23.10. 12:55 | Pozvánky

    Konference OpenAlt 2025 proběhne již příští víkend 1. a 2. listopadu v Brně. Nabídne přibližně 80 přednášek a workshopů rozdělených do 7 tematických tracků. Program se může ještě mírně měnit až do samotné konference, a to s ohledem na opožděné úpravy abstraktů i případné podzimní virózy. Díky partnerům je vstup na konferenci zdarma. Registrace není nutná. Vyplnění formuláře však pomůže s lepším plánováním dalších ročníků konference.

    Ladislav Hagara | Komentářů: 0
    23.10. 05:33 | IT novinky

    Samsung představil headset Galaxy XR se 4K Micro-OLED displeji, procesorem Snapdragon XR2+ Gen 2, 16 GB RAM, 256 GB úložištěm, operačním systémem Android XR a Gemini AI.

    Ladislav Hagara | Komentářů: 2
    Jaké řešení používáte k vývoji / práci?
     (35%)
     (48%)
     (20%)
     (20%)
     (24%)
     (18%)
     (21%)
     (18%)
     (18%)
    Celkem 268 hlasů
     Komentářů: 14, poslední 14.10. 09:04
    Rozcestník

    Trocha rekurze nemůže škodit

    10.11.2008 21:52 | Přečteno: 1791× | Ostatní | poslední úprava: 10.11.2008 21:54

    Jen tak, před nedávnem, z dlouhé chvíle vzniklo toliko kódu…

    #include "iostream"
    using namespace std;
    
    class CsSuccesor
    {
    public:
    	CsSuccesor();
    	CsSuccesor(CsSuccesor &that);
    	~CsSuccesor();
    	CsSuccesor& Succesor(CsSuccesor &that);
    	friend ostream& operator <<(ostream &stream, CsSuccesor succesor);
    	CsSuccesor& operator =(CsSuccesor &that);
    	CsSuccesor& operator +(CsSuccesor &that);
    	CsSuccesor& operator -(CsSuccesor &that);
    	unsigned long long int ToInteger();
    
    private:
    	CsSuccesor *m_pSucc;
    };
    
    CsSuccesor::CsSuccesor()
    {
    	m_pSucc = NULL;
    }
    
    CsSuccesor::CsSuccesor(CsSuccesor &that)
    {
    	m_pSucc = NULL;
    
    	if (that.m_pSucc != NULL)
    	{
    		m_pSucc = new CsSuccesor(*(that.m_pSucc));
    	}
    }
    
    CsSuccesor::~CsSuccesor()
    {
    	if (m_pSucc != NULL)
    	{
    		delete m_pSucc;
    		m_pSucc = NULL;
    	}
    }
    
    CsSuccesor& CsSuccesor::Succesor(CsSuccesor &that)
    {
    	m_pSucc = new CsSuccesor();
    	if (that.m_pSucc != NULL)
    	{
    		m_pSucc->Succesor(*(that.m_pSucc));
    	}
    	return *this;
    }
    
    ostream& operator <<(ostream &stream, CsSuccesor succesor)
    {
    	if (succesor.m_pSucc)
    	{
    		stream << "Succ(" << *(succesor.m_pSucc) << ")";
    	}
    	else
    	{
    		stream << "Zero";
    	}
    	return stream;
    }
    
    CsSuccesor& CsSuccesor::operator =(CsSuccesor &that)
    {
    	if (this != &that)
    	{
    		if (m_pSucc != NULL)
    		{
    			delete m_pSucc;
    			m_pSucc = NULL;
    		}
    		if (that.m_pSucc)
    		{
    			m_pSucc = new CsSuccesor(*that.m_pSucc);
    		}
    	}
    	return *this;
    }
    
    CsSuccesor& CsSuccesor::operator +(CsSuccesor& that)
    {
    	CsSuccesor* out = new CsSuccesor();
    	if (m_pSucc != NULL)
    	{
    		out->m_pSucc = new CsSuccesor(*m_pSucc + that);
    	}
    	else
    	{
    		if (that.m_pSucc != NULL)
    		{
    			out = new CsSuccesor(that);
    		}
    	}
    	return *out;
    }
    
    CsSuccesor& CsSuccesor::operator -(CsSuccesor& that)
    {
    	CsSuccesor* out = new CsSuccesor(*this);
    	if (that.m_pSucc != NULL)
    	{
    		if (m_pSucc != NULL)
    		{
    			delete out;
    			out = new CsSuccesor(*m_pSucc - *that.m_pSucc);
    		}
    	}
    	return *out;
    }
    
    unsigned long long int CsSuccesor::ToInteger()
    {
    	return (m_pSucc != NULL ? m_pSucc->ToInteger() + 1 : 0);
    }
    
    int main()
    {
    	CsSuccesor succ1;
    	cout << succ1 << '\n' << succ1.ToInteger() << '\n';
    	CsSuccesor succ2(succ1);
    	cout << succ2 << '\n' << succ2.ToInteger() << '\n';
    	CsSuccesor succ3(succ1.Succesor(succ2));
    	cout << succ3 << '\n' << succ3.ToInteger() << '\n';
    	CsSuccesor succ4 = succ3;
    	cout << succ4 << '\n' << succ4.ToInteger() << '\n';
    	CsSuccesor succ5 = succ3 + succ4;
    	cout << succ5 << '\n' << succ5.ToInteger() << '\n';
    	CsSuccesor succ6 = succ5 - succ3;
    	cout << succ6 << '\n' << succ6.ToInteger() << '\n';
    
    	return 0;
    }
    
    

    …netvrdím, že ve všech rysech je to dokonalé, ale zábavné a hravé.

           

    Hodnocení: 25 %

            špatnédobré        

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    Komentáře

    Vložit další komentář

    10.11.2008 22:02 dum8d0g
    Rozbalit Rozbalit vše Re: Trocha rekurze nemůže škodit
    to se tak strasne bojis komentaru? to ti proboha udelali.. ;-)
    10.11.2008 22:03 dum8d0g
    Rozbalit Rozbalit vše Re: Trocha rekurze nemůže škodit
    *co
    vogo avatar 10.11.2008 22:07 vogo | skóre: 34 | blog: "Skládat papír"
    Rozbalit Rozbalit vše Re: Trocha rekurze nemůže škodit
    tohle je tzv. „no comment code“ :)

    u vážně míněného kódu komentáře píšu
    Nejsem paranoidní, ale to ještě neznamená, že po mě nejdou.
    Heron avatar 10.11.2008 22:22 Heron | skóre: 53 | blog: root_at_heron | Olomouc
    Rozbalit Rozbalit vše Re: Trocha rekurze nemůže škodit
    Tak tady jsou tak krátké metody (což je jedině dobře), že jejich fce je tak plně popsána jejich jménem (tak to má být).

    Pravda, mohlo být popsáno API, ale jako kód pro radost se mi to na první pohled líbí (chyby jsem nehledal).
    11.11.2008 10:14 zde | skóre: 9 | blog: Linuch | Brno
    Rozbalit Rozbalit vše Re: Trocha rekurze nemůže škodit
    Proč? Navzdory neskutečně ukecanému a silně uhozenému programovacímu jazyku je to docela čitelné. BTW takhle se obvykle v teorii čísel formálně definují přirozená čísla- je to prostě nejjednodušší.
    Táto, ty de byl? V práci, já debil.
    vogo avatar 11.11.2008 16:39 vogo | skóre: 34 | blog: "Skládat papír"
    Rozbalit Rozbalit vše Re: Trocha rekurze nemůže škodit
    Přesně o to jde, je to rekurzívní datový typ celé číslo. Zřejmě kolega :).
    Nejsem paranoidní, ale to ještě neznamená, že po mě nejdou.
    11.11.2008 21:05 Ignor
    Rozbalit Rozbalit vše Re: Trocha rekurze nemůže škodit
    V teorii čísel asi ne, tam to je spíš nanic.

    Jestli jsem to dobře pochopil (za což fakt neručím), tak to připomíná ňákou takovouhle konstrukci třeba

    0 = {}; S(n) = {n}

    než tu běžnou z teorie množin

    0 = {}; S(n) = n u {n}
    11.11.2008 21:07 kralyk z abclinuxu | skóre: 29 | blog:
    Rozbalit Rozbalit vše Re: Trocha rekurze nemůže škodit
    Už nevim, kdo to řekl, ale:

    "Real Programmers don't use comments. If it was hard to write, it should be hard to read."
    11.11.2008 22:41 Jirka | skóre: 36
    Rozbalit Rozbalit vše Re: Trocha rekurze nemůže škodit
    To už by to mohlo vypadat rovnou takhle:

    void do(int A[], int s) { int i, j, k, l; k = size / 2; while (k > 0) { for (i = k; i < s; i++) { j = i; l = A[i]; while ((j >= k) && (A[j-k] > l)) { A[j] = A[j - k]; j = j - k; } A[j] = l; } if (k == 2) k = 1; else k = (int) (k / 2.2); } }

    Eliminace poznámek a (tím blbým způsobem jsou i vhodné názvy proměnných formou poznámek a přesto znám programátory, kteří používají jména jako: xx, yy, xxx, yyy, xxxx, yyyy) substituce názvů proměnných jejich stručnějším ekvivalentem, zde imho naprosto znečitelnila tento (jinak profláklý) kus kódu.

    Ono to zcela jistě bylo myšleno jako ironie, ale někdo by se té citace mohl chytnout.

    (Přebráno s mírnou úpravou z wikipedie.)
    11.11.2008 22:47 Jirka | skóre: 36
    Rozbalit Rozbalit vše Re: Trocha rekurze nemůže škodit
    Omlouvám se, nějak jsem při náhledu ignoroval špatný tag:
    void do(int A[], int s) 
    { 
      int i, j, k, l; 
      k = size / 2; 
    
      while (k > 0) 
      { 
        for (i = k; i < s; i++) 
        { 
          j = i; 
          l = A[i]; 
          
          while ((j >= k) && (A[j-k] > l)) 
          { 
            A[j] = A[j - k]; 
            j = j - k; 
          } 
        
          A[j] = l; 
        } 
    
        if (k == 2) k = 1; else k = (int) (k / 2.2); 
      } 
    } 
    
    11.11.2008 22:57 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: Trocha rekurze nemůže škodit
    Já myslel, že to byl záměr… :-)
    11.11.2008 23:09 Jirka | skóre: 36
    Rozbalit Rozbalit vše Re: Trocha rekurze nemůže škodit
    Myslím, že odsazují i ti největší barbaři (kromě soutěží v zatemňování kódu). :-)
    11.11.2008 23:17 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: Trocha rekurze nemůže škodit
    A také kromě těch, kdo se s programovacím jazykem utkávají jen proto, že kvůli zápočtu/zkoušce musejí. Viděl jsem i jedince, kteří sice odsazovali (nejspíš proto, že jim řekli, že se to má), ale víceméně nahodile, bez vazby na strukturu zdrojáku.
    11.11.2008 23:09 xavier | skóre: 10 | blog: borkovo
    Rozbalit Rozbalit vše Re: Trocha rekurze nemůže škodit
    Nebo tak.
    hikikomori82 avatar 10.11.2008 23:43 hikikomori82 | skóre: 18 | blog: foobar | Košice
    Rozbalit Rozbalit vše Re: Trocha rekurze nemůže škodit
    A teraz verzia pre bash, asi 100x jednoduchsia
    #!/bin/bash
    echo "Nejaky text"
    echo "Nejaky text"
    echo "Nejaky text"
    echo "Nejaky text"
    echo "Nejaky text"
    echo "Nejaky text"
    11.11.2008 07:41 Kverulant
    Rozbalit Rozbalit vše Re: Trocha rekurze nemůže škodit
    nevidim rekurziu :-)
    hikikomori82 avatar 11.11.2008 08:17 hikikomori82 | skóre: 18 | blog: foobar | Košice
    Rozbalit Rozbalit vše Re: Trocha rekurze nemůže škodit
    Naco, na vypis piatich textov potrebujete rekurziu a 100 riadkov kodu?
    11.11.2008 13:19 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: Trocha rekurze nemůže škodit
    Třeba na to, aby titulek dával smysl. :-)
    11.11.2008 00:48 ::: | skóre: 14 | blog: e_lama
    Rozbalit Rozbalit vše Re: Trocha rekurze nemůže škodit
    CsSuccesor& CsSuccesor::operator -(CsSuccesor& that)
    {
    	CsSuccesor* out = new CsSuccesor(*this);
    	if (that.m_pSucc != NULL)
    	{
    		if (m_pSucc != NULL)
    		{
    			delete out;
    			out = new CsSuccesor(*m_pSucc - *that.m_pSucc);
    		}
    	}
    	return *out;
    }
    
    tak se mi udelalo nevolno a ted jdu uz radsi spat... jen tak na okraj - pan je Javista ??? :-)
    vogo avatar 11.11.2008 06:40 vogo | skóre: 34 | blog: "Skládat papír"
    Rozbalit Rozbalit vše Re: Trocha rekurze nemůže škodit
    bývalý…

    mínus jsem chtěl předělat, ale pak jsem na to zapomněl :)
    Nejsem paranoidní, ale to ještě neznamená, že po mě nejdou.
    11.11.2008 07:12 JS
    Rozbalit Rozbalit vše Re: Trocha rekurze nemůže škodit
    Chtel jsem vas upozornit na zajimavy clanek:

    Trocha rekurze nemůže škodit
    11.11.2008 08:27 skonciljsem | skóre: 20
    Rozbalit Rozbalit vše Re: Trocha rekurze nemůže škodit
    Tenhle je taky prima.
    11.11.2008 08:45 Kverulant
    Rozbalit Rozbalit vše Re: Trocha rekurze nemůže škodit
    Ja som niekde videl odkaz na dobry odkaz.
    mkoubik avatar 11.11.2008 13:52 mkoubik | skóre: 5 | blog: lorem_ipsum | Praha 8 - Bohnice
    Rozbalit Rozbalit vše Re: Trocha rekurze nemůže škodit
    Tenhle je lepší.
    Václav 11.11.2008 09:18 Václav "Darm" Novák | skóre: 26 | blog: Darmovy_kecy | Bechyně / Praha
    Rozbalit Rozbalit vše Re: Trocha rekurze nemůže škodit
    Dík, mrknu se.
    Cross my heart and hope to fly, stick a cupcake in my eye!
    11.11.2008 10:48 ::: | skóre: 14 | blog: e_lama
    Rozbalit Rozbalit vše Re: Trocha rekurze nemůže škodit
    super, ale chybi ti tam podminka na ukonceni rekruze... :-D
    11.11.2008 13:04 JS
    Rozbalit Rozbalit vše Re: Trocha rekurze nemůže škodit
    Nechybi, ta je tam implicitni - po urcite dobe bude prislusny proces automaticky ukoncen operacnim systemem. ;-)
    11.11.2008 15:25 Kverulant
    Rozbalit Rozbalit vše Re: Trocha rekurze nemůže škodit
    Nechybi, ta je tam implicitni - po urcite dobe bude prislusny proces automaticky ukoncen operacnim systemem. ;-)
    Alebo ujom z elektrarni :-D Elektrikari su naj hackeri :-D Vypnu a je to...
    11.11.2008 21:10 kralyk z abclinuxu | skóre: 29 | blog:
    Rozbalit Rozbalit vše Re: Trocha rekurze nemůže škodit
    Naprosto nejlepší vysvětlení rekurze je tady.
    Michal Fecko avatar 11.11.2008 21:42 Michal Fecko | skóre: 31 | blog: Poznámkový blog
    Rozbalit Rozbalit vše Re: Trocha rekurze nemůže škodit
    Pamatam sa ako na strednej nas informatikarka ucila triedenie s pouzitim rekurzie a vzdy to komentovala takto: "Vnarame sa, vnarame sa, vnarame sa, HOP a už sa vynárame, a znova sa vynárame ... " :-D
    12.11.2008 21:18 rtfm
    Rozbalit Rozbalit vše Re: Trocha rekurze nemůže škodit
    lisp? haskell? -> pleasure
    vogo avatar 13.11.2008 18:53 vogo | skóre: 34 | blog: "Skládat papír"
    Rozbalit Rozbalit vše Re: Trocha rekurze nemůže škodit
    haskel
    Nejsem paranoidní, ale to ještě neznamená, že po mě nejdou.

    Založit nové vláknoNahoru

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.