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í
×
eParkomat, startup z ČR, postoupil mezi finalisty evropského akcelerátoru ChallengeUp!
Robot na pivo mu otevřel dveře k opravdovému byznysu
Internet věcí: Propojený svět? Už se to blíží...
včera 16:24 | Nová verze

Byla vydána Mageia 5.1. Jedná se o první opravné vydání verze 5, jež vyšla v červnu loňského roku (zprávička). Uživatelům verze 5 nepřináší opravné vydání nic nového, samozřejmě pokud pravidelně aktualizují. Vydání obsahuje všechny aktualizace za posledního téměř půldruhého roku. Mageia 5.1 obsahuje LibreOffice 4.4.7, Linux 4.4.32, KDE4 4.14.5 nebo GNOME 3.14.3.

Ladislav Hagara | Komentářů: 0
včera 13:42 | Pozvánky

V Praze probíhá konference Internet a Technologie 16.2, volné pokračování jarní konference sdružení CZ.NIC. Konferenci lze sledovat online na YouTube. K dispozici je také archiv předchozích konferencí.

Ladislav Hagara | Komentářů: 0
2.12. 22:44 | Komunita

Joinup informuje, že Mnichov používá open source groupware Kolab. V srpnu byl dokončen dvouletý přechod na toto řešení. V provozu je asi 60 000 poštovních schránek. Nejenom Kolabu se věnoval Georg Greve ve své přednášce Open Source: the future for the European institutions (SlideShare) na konferenci DIGITEC 2016, jež proběhla v úterý 29. listopadu v Bruselu. Videozáznam přednášek z hlavního sálu je ke zhlédnutí na Livestreamu.

Ladislav Hagara | Komentářů: 16
2.12. 15:30 | Zajímavý projekt

Společnost Jolla oznámila v příspěvku Case study: Sailfish Watch na svém blogu, že naportovala Sailfish OS na chytré hodinky. Využila a inspirovala se otevřeným operačním systémem pro chytré hodinky AsteroidOS. Použita je knihovna libhybris. Ukázka ovládání hodinek na YouTube.

Ladislav Hagara | Komentářů: 8
2.12. 14:15 | Nová verze

Byla vydána verze 7.1.0 skriptovacího jazyka PHP používaného zejména k vývoji dynamických webových stránek. Jedná se o první stabilní verzi nejnovější větvě 7.1. Přehled novinek v dokumentaci. Podrobnosti v ChangeLogu. K dispozici je také příručka pro přechod z PHP 7.0.x na PHP 7.1.x.

Ladislav Hagara | Komentářů: 2
2.12. 12:55 | Nová verze

Google Chrome 55 byl prohlášen za stabilní. Nejnovější stabilní verze 55.0.2883.75 tohoto webového prohlížeče přináší řadu oprav a vylepšení (YouTube). Opraveno bylo také 36 bezpečnostních chyb. Mariusz Mlynski si například vydělal 22 500 dolarů za 3 nahlášené chyby (Universal XSS in Blink).

Ladislav Hagara | Komentářů: 4
2.12. 11:55 | Pozvánky

Máte rádi svobodný software a hardware nebo se o nich chcete něco dozvědět? Přijďte na 135. sraz spolku OpenAlt, který se bude konat ve čtvrtek 8. prosince od 18:00 v Radegastovně Perón (Stroupežnického 20, Praha 5). Sraz bude tentokrát tématický. Bude retro! K vidění budou přístroje jako Psion 5mx nebo Palm Z22. Ze svobodného hardwaru pak Openmoko nebo čtečka WikiReader. Přijďte se i vy pochlubit svými legendami, nebo alespoň na pivo. Moderní hardware má vstup samozřejmě také povolen.

xkucf03 | Komentářů: 0
2.12. 00:10 | Nová verze

Byla vydána verze 3.2 svobodného systému pro detekci a prevenci průniků a monitorování bezpečnosti počítačových sítí Suricata. Z novinek lze zmínit například podporu protokolů DNP3 a CIP/ENIP, vylepšenou podporu TLS a samozřejmě také aktualizovanou dokumentaci.

Ladislav Hagara | Komentářů: 0
1.12. 21:00 | Nová verze

Byla vydána beta verze Linux Mintu 18.1 s kódovým jménem Serena. Na blogu Linux Mintu jsou hned dvě oznámení. První o vydání Linux Mintu s prostředím MATE a druhé o vydání Linux Mintu s prostředím Cinnamon. Stejným způsobem jsou rozděleny také poznámky k vydání (MATE, Cinnamon) a přehled novinek s náhledy (MATE, Cinnamon). Linux Mint 18.1 bude podporován až do roku 2021.

Ladislav Hagara | Komentářů: 0
1.12. 16:42 | Nová verze

Byl vydán Devuan Jessie 1.0 Beta 2. Jedná se o druhou beta verzi forku Debianu bez systemd představeného v listopadu 2014 (zprávička). První beta verze byla vydána v dubnu letošního roku (zprávička). Jedna z posledních přednášek věnovaných Devuanu proběhla v listopadu na konferenci FSCONS 2016 (YouTube, pdf).

Ladislav Hagara | Komentářů: 0
Kolik máte dat ve svém domovském adresáři na svém primárním osobním počítači?
 (32%)
 (24%)
 (29%)
 (7%)
 (5%)
 (3%)
Celkem 767 hlasů
 Komentářů: 50, poslední 29.11. 15:50
Rozcestník
Reklama

Dotaz: c++ mocnina na n

22.11.2012 17:28 marek33
c++ mocnina na n
Přečteno: 4363×
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.
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: 33 | 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 much more better.
22.11.2012 19:45 Michal Kubeček | skóre: 71 | 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: 58 | 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: 60 | 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: 53 | blog: pavlix
Rozbalit Rozbalit vše Re: c++ mocnina na n
A já myslel, že domácí úkoly se řeší samostatně.
GentooFedoraSCRAM – Jsem open source vývojář, nikoli markeťák ⇒ názory zde uvedené jsou jen mé vlastní.
Ř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.