abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    11.5. 18:22 | Nová verze

    Byla vydána verze 0.2.0 v Rustu napsaného frameworku Pingora pro vytváření rychlých, spolehlivých a programovatelných síťových systémů. Společnost Cloudflare jej letos v únoru uvolnila pod licencí Apache 2.0.

    Ladislav Hagara | Komentářů: 0
    10.5. 19:11 | Nová verze

    Open source RDP (Remote Desktop Protocol) server xrdp (Wikipedie) byl vydán ve verzi 0.10.0. Z novinek je vypíchnuta podpora GFX (Graphic Pipeline Extension). Nová větev řeší také několik bezpečnostních chyb.

    Ladislav Hagara | Komentářů: 13
    10.5. 04:11 | Nová verze

    Rocky Linux byl vydán v nové stabilní verzi 9.4. Přehled novinek v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 0
    9.5. 22:22 | Bezpečnostní upozornění

    Dellu byla odcizena databáze zákazníků (jméno, adresa, seznam zakoupených produktů) [Customer Care, Bleeping Computer].

    Ladislav Hagara | Komentářů: 22
    9.5. 21:11 | Zajímavý článek

    V lednu byl otevřen editor kódů Zed od autorů editoru Atom a Tree-sitter. Tenkrát běžel pouze na macOS. Byl napevno svázán s Metalem. Situace se ale postupně mění. V aktuálním příspěvku Kdy Zed na Linuxu? na blogu Zedu vývojáři popisují aktuální stav. Blíží se alfa verze.

    Ladislav Hagara | Komentářů: 53
    9.5. 14:33 | Pozvánky

    O víkendu 11. a 12. května lze navštívit Maker Faire Prague, festival plný workshopů, interaktivních činností a především nadšených a zvídavých lidí.

    Ladislav Hagara | Komentářů: 0
    8.5. 21:55 | Nová verze

    Byl vydán Fedora Asahi Remix 40, tj. linuxová distribuce pro Apple Silicon vycházející z Fedora Linuxu 40.

    Ladislav Hagara | Komentářů: 20
    8.5. 20:22 | IT novinky

    Představena byla služba Raspberry Pi Connect usnadňující vzdálený grafický přístup k vašim Raspberry Pi z webového prohlížeče. Odkudkoli. Zdarma. Zatím v beta verzi. Detaily v dokumentaci.

    Ladislav Hagara | Komentářů: 7
    8.5. 12:55 | Nová verze

    Byla vydána verze R14.1.2 desktopového prostředí Trinity Desktop Environment (TDE, fork KDE 3.5). Přehled novinek v poznámkách k vydání, podrobnosti v seznamu změn.

    JZD | Komentářů: 0
    7.5. 18:55 | IT novinky

    Dnešním dnem lze již také v Česku nakupovat na Google Store (telefony a sluchátka Google Pixel).

    Ladislav Hagara | Komentářů: 10
    Podle hypotézy Mrtvý Internet mj. tvoří většinu online interakcí boti.
     (68%)
     (7%)
     (12%)
     (13%)
    Celkem 186 hlasů
     Komentářů: 11, poslední 10.5. 18:00
    Rozcestník

    Dotaz: c++ mocnina na n

    22.11.2012 17:28 marek33
    c++ mocnina na n
    Přečteno: 8065×
    Ahoj mám takový dotaz, v c++ jsem zkoušel vytvořit mocninu na n-tou, nevíte někdo jak na to ??

    Řešení dotazu:


    Odpovědi

    22.11.2012 17:34 chrono
    Rozbalit Rozbalit vše Re: c++ mocnina na n
    V <cmath> je funkcia std::pow
    22.11.2012 17:52 marek33
    Rozbalit Rozbalit vše Re: c++ mocnina na n
    myslel jsem pomocí funkce if
    22.11.2012 18:12 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
    Rozbalit Rozbalit vše Re: c++ mocnina na n
    Vyšel bych z: IF „hlad“ GOTO „lednice“
    To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
    22.11.2012 18:14 Jary | skóre: 30 | blog: Jary má blog | Dům
    Rozbalit Rozbalit vše Re: c++ mocnina na n
    if není funkce. A když už bys to rád dělal nějak divně složitě, proč to neuděláš pomocí operátorů & | ^?
    .sig virus 3.2_cz: Prosím, okopírujte tento text do vaší patičky. GitHub
    22.11.2012 18:16 chrono
    Rozbalit Rozbalit vše Re: c++ mocnina na n
    Dalo by sa použiť aj if, ale rozumnejšie by mohlo byť for (a if pre n=0 alebo 1)
    22.11.2012 18:29 l4m4
    Rozbalit Rozbalit vše Re: c++ mocnina na n
    Chceš kód obsaující if? Chceš efektivní algoritmus pro celočíselné mocniny? Všechno lze zařídit!
    double mocnina(double x, int i)
    {
        double r = 1.0;
        if (!i)
            return 1.0;
        bool negative = false;
        if (i < 0) {
            negative = true;
            i = -i;
        }
        for ( ; ; ) {
            if (i & 1)
                r *= x;
            if (!(i >>= 1))
                break;
            x *= x;
        }
        return negative ? 1.0/r : r;
    }
    
    Jen nevím, jak budeš vysvětlovat, jak to funguje...
    22.11.2012 19:30 Radovan
    Rozbalit Rozbalit vše Re: c++ mocnina na n
    Pěkné, ale říká se "co je malé, to je hezké" :-D
    double mocnina(double x,int y)
           {
           return x*(y>1?mocnina(x,--y):1);
           }
    22.11.2012 19:43 l4m4
    Rozbalit Rozbalit vše Re: c++ mocnina na n
    Tam ovšem není žádný if. Cílem bylo mít tam nějaké ify ;)
    22.11.2012 20:02 Radovan
    Rozbalit Rozbalit vše Re: c++ mocnina na n
    If tam je, jenomže maskovaný ;-)
    double mocnina(double x,int y)
           {
           if (y>1)
              return x*mocnina(x,--y);
           else
              return 1;
           }
    Ale jinak je to blbost dobrá akorát na hraní.
    22.2.2013 12:32 libco
    Rozbalit Rozbalit vše Re: c++ mocnina na n

    Je tam chyba.

    Má tam byť:

    else

    return x;

    22.2.2013 13:23 Vtipnéř | skóre: 38 | blog: Vtipnéřův blog | Brno
    Rozbalit Rozbalit vše Re: c++ mocnina na n
    Spíš

    if (y>0)

    Jirka
    Opening Windows is better than washing them. Clearing Windows (e.g. erasing or deleting) is even much better.
    22.11.2012 19:45 Michal Kubeček | skóre: 72 | Luštěnice
    Rozbalit Rozbalit vše Re: c++ mocnina na n
    "Hezké" možná, ale máte podstatně horší časovou složitost vůči exponentu a ještě budete muset spoléhat na inteligenci překladače, abyste se nedostal do problémů s přetečením zásobníku.
    22.11.2012 19:47 l4m4
    Rozbalit Rozbalit vše Re: c++ mocnina na n
    Jo, a samozřejmě tohle počítá mocnina(x, 1000000) pomocí 999999 násobení, kdežto mnou uvedený kód pomocí 27 násobení ;)
    23.11.2012 00:50 lertimir | skóre: 64 | blog: Par_slov
    Rozbalit Rozbalit vše Re: c++ mocnina na n
    Takhle to dopadne, když programátor kašle na výpočetní složitost algoritmů.
    23.11.2012 09:36 l4m4
    Rozbalit Rozbalit vše Re: c++ mocnina na n
    Popravdě řečeno, takle by ten algoritmus byl vhodný pro GMP (kde samozřejmě mocnina nějak podobně implementována je), protože tam je cena nějakých bitových operací a dokonce i podmínek zanedbatelná vůči ceně násobení dvou čísel, a především pro jiné typy než double, které zvládne __builtin_powi()...

    Jelikož jsou nejčastěji zapotřebí nízké mocniny, bylo by vhodné pro ně konkrétní výpočty zadrátovat -- a navíc to celé hodit do makra s __builtin_constant_p(), aby se to pro nízké předem známé mocniny optimálně inlinovalo.

    A když se bavíme o C++, tak lze ostatně téhož dosáhnout šablonou, kde je ta mocnina coby parametr, a specializací pro nízké mocniny. Akorát nevím, zda by tam pak byly nějaké ify ;)
    22.11.2012 19:36 Sten
    Rozbalit Rozbalit vše Re: c++ mocnina na n
    Když jde o C++, použil bych šablony, ať to počítá rovnou překladač :-)
    template <int base,
              int pow>
    struct mocnina
    {
        enum {
            value = base * mocnina<base, pow - 1>::value
        };
    };
    
    template <int base>
    struct mocnina<base, 0>
    {
        enum {
            value = 1
        };
    };
    
    23.11.2012 09:39 l4m4
    Rozbalit Rozbalit vše Re: c++ mocnina na n
    error: template instantiation depth exceeds maximum of 900
    18.2.2013 17:16 Ivan
    Rozbalit Rozbalit vše Re: c++ mocnina na n
    Na MSVC je max hloubka rekurze sablon 2500. Na g++ je konfigurovatelna (je na to nejaky parameter).

    22.2.2013 23:18 potato
    Rozbalit Rozbalit vše Re: c++ mocnina na n
    Na druhé straně potřebuje-li kód úroveň vnoření šablon větší než 900, někde je cosi podezřelého...
    22.11.2012 21:22 rastos | skóre: 62 | blog: rastos
    Rozbalit Rozbalit vše Re: c++ mocnina na n
    jsem zkoušel vytvořit
    Ano? A ako ďaleko si sa dostal?
    pavlix avatar 22.11.2012 23:29 pavlix | skóre: 54 | blog: pavlix
    Rozbalit Rozbalit vše Re: c++ mocnina na n
    A já myslel, že domácí úkoly se řeší samostatně.
    Já už tu vlastně ani nejsem. Abclinuxu umřelo.
    Řešení 3× (Xóža Hňabaj, Voty, Ash)
    23.11.2012 10:33 pesspi | skóre: 7 | blog: hateblog
    Rozbalit Rozbalit vše Re: c++ mocnina na n
    int mocnina(int x,y) {
      if (y == 2) return x*x;
      if (y == 3) return x*x*x;
      if (y == 4) return x*x*x*x;
      if (y == 5) return x*x*x*x*x;
      if (y == 6) return x*x*x*x*x*x;
      if (y == 7) return x*x*x*x*x*x*x;
      if (y == 8) return x*x*x*x*x*x*x*x;
      if (y == 9) return x*x*x*x*x*x*x*x*x;
      if (y == 10) return x*x*x*x*x*x*x*x*x*x;
      if (y == 11) return x*x*x*x*x*x*x*x*x*x*x;
      if (y == 12) return x*x*x*x*x*x*x*x*x*x*x*x;
      if (y == 13) return x*x*x*x*x*x*x*x*x*x*x*x*x;
      if (y == 14) return x*x*x*x*x*x*x*x*x*x*x*x*x*x;
      if (y == 15) return x*x*x*x*x*x*x*x*x*x*x*x*x*x*x;
      if (y == 16) return x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x;
      if (y == 17) return x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x;
      if (y == 18) return x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x;
      if (y == 19) return x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x;
      return x;
    }
    Je to najlepsia verzia lebo obsahuje najviac ifov. Pre profesionalnu verziu si na zaciatok mozes doplnit assert(y<20);
    23.11.2012 11:12 chrono
    Rozbalit Rozbalit vše Re: c++ mocnina na n
    Prípadne sa tam môže pridať ešte jedno if a rekurzia. :)
    18.2.2013 17:10 Pavel Kocman
    Rozbalit Rozbalit vše Re: c++ mocnina na n
    Dělávali jsme to pomocí for ciklu, tím mohla být mocnina doopravdy libovolná, ale už si nevzpomínám. Taky to potřebuju.
    22.2.2013 12:07 libco
    Rozbalit Rozbalit vše Re: c++ mocnina na n

    double mocnina_x(double cislo, int umocni_na)

    {

         int i, vysledok = 1;

         for (i = 1; i <= umocni_na; i++)

         vysledok *= cislo;

         return vysledok;

    }

    22.2.2013 17:36 Bill Gates
    Rozbalit Rozbalit vše Re: c++ mocnina na n
    Mozna by se to dalo jeste zoptimalizovat z pohledu delky kodu programu ... Treba na arduinu, kde obcas setrime kazdy bajt by byla lepsi verze ponekud modifikovana (viz nize), dle testovaci kompilace to vychazi pro arduino Mega o 228 bytu lip :) a 228 bajtu na arduinu = misto na plno dalsich funkci. Tedy za predpokladu ze potrebujeme nezbytne nutne pouzit ify :D

    void setup() {
    int x=10;
    int y=10;
    int q=mocnina(x,y);
    Serial.println(q);
    }
    
    int mocnina(int x,int y) {
      if (y == 2) return x*x;
      if (y == 3) return x*x*x;
      if (y == 4) return x*x*x*x;
      if (y == 5) return x*x*x*x*x;
      if (y == 6) return x*x*x*x*x*x;
      if (y == 7) return x*x*x*x*x*x*x;
      if (y == 8) return x*x*x*x*x*x*x*x;
      if (y == 9) return x*x*x*x*x*x*x*x*x;
      if (y == 10) return x*x*x*x*x*x*x*x*x*x;
      if (y == 11) return x*x*x*x*x*x*x*x*x*x*x;
      if (y == 12) return x*x*x*x*x*x*x*x*x*x*x*x;
      if (y == 13) return x*x*x*x*x*x*x*x*x*x*x*x*x;
      if (y == 14) return x*x*x*x*x*x*x*x*x*x*x*x*x*x;
      if (y == 15) return x*x*x*x*x*x*x*x*x*x*x*x*x*x*x;
      if (y == 16) return x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x;
      if (y == 17) return x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x;
      if (y == 18) return x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x;
      if (y == 19) return x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x;
      return x;
    }
    
    void loop() { }
    

    Binary sketch size: 4,084 bytes

    void setup() {
    int x=10;
    int y=10;
    int q=mocnina(x,y);
    Serial.println(q);
    }
    
    int mocnina(int c,int y) {
      int x=c;
      if (y >= 2) x*=c;
      if (y >= 3) x*=c;
      if (y >= 4) x*=c;
      if (y >= 5) x*=c;
      if (y >= 6) x*=c;
      if (y >= 7) x*=c;
      if (y >= 8) x*=c;
      if (y >= 9) x*=c;
      if (y >= 10) x*=c;
      if (y >= 11) x*=c;
      if (y >= 12) x*=c;
      if (y >= 13) x*=c;
      if (y >= 14) x*=c;
      if (y >= 15) x*=c;
      if (y >= 16) x*=c;
      if (y >= 17) x*=c;
      if (y >= 18) x*=c;
      if (y >= 19) x*=c;
      return x;
    }
    
    void loop() { }
    
    
    Binary sketch size: 3,856 bytes

    22.2.2013 17:42 Kit
    Rozbalit Rozbalit vše Re: c++ mocnina na n
    Zkus to ještě porovnat s tím, co napsal libco. 3,856 B mi připadá strašně moc.
    22.2.2013 18:09 Bill Gates
    Rozbalit Rozbalit vše Re: c++ mocnina na n
    void setup() {
    int x=10;
    int y=10;
    int q=mocnina(x,y);
    Serial.println(q);
    }
    
    
    double mocnina(double cislo, int umocni_na)
    {
    int i, vysledok = 1;
    for (i = 1; i <= umocni_na; i++)
    vysledok *= cislo;
    return vysledok;
    }
    
    void loop() { }
    
    Binary sketch size: 4,068 bytes

    void setup() {
    int x=10;
    int y=10;
    int q=mocnina(x,y);
    Serial.println(q);
    }
    
    
    int mocnina(int cislo, int umocni_na)
    {
    int i, vysledok = 1;
    for (i = 1; i <= umocni_na; i++)
    vysledok *= cislo;
    return vysledok;
    }
    
    void loop() { }
    
    Binary sketch size: 3,454 bytes
    22.2.2013 18:21 Bill Gates
    Rozbalit Rozbalit vše Re: c++ mocnina na n
    void setup() {
    int x=10;
    int y=10;
    int q=mocnina(x,y);
    Serial.println(q);
    }
    
    
    double mocnina(double x,int y) {
    return x*(y>1?mocnina(x,--y):1);
    }
           
    void loop() { }
    
    Binary sketch size: 3,950 bytes

    void setup() {
    int x=10;
    int y=10;
    int q=mocnina(x,y);
    Serial.println(q);
    }
    
    
    int mocnina(int x,int y) {
    return x*(y>1?mocnina(x,--y):1);
    }
           
    void loop() { }
    Binary sketch size: 3,474 bytes
    22.2.2013 18:57 Ivan
    Rozbalit Rozbalit vše Re: c++ mocnina na n
    A to co stenovo reseni? Vysledek vypocita kompilator behem kompilace a do zdrojaku dosadi primo konstantu:
    0000000000400578 <main>:
      400578:       48 83 ec 08             sub    $0x8,%rsp
      40057c:       48 be 00 e4 0b 54 02    mov    $0x2540be400,%rsi
      400583:       00 00 00
      400586:       bf 98 06 40 00          mov    $0x400698,%edi
      40058b:       31 c0                   xor    %eax,%eax
      40058d:       e8 d6 fe ff ff          callq  400468 <printf@plt>
      400592:       5a                      pop    %rdx
      400593:       31 c0                   xor    %eax,%eax
      400595:       c3                      retq
    
    0x2540be400 = 10^10

    Založit nové vláknoNahoru

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

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