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í
×

včera 16:11 | Komunita

Byly zveřejněny videozáznamy přednášek a workshopů z letošní konference OpenAlt konané 4. a 5. listopadu v Brně. K videozáznamům lze přistupovat ze stránky na SuperLectures nebo přes program konference, detaily o vybrané přednášce nebo workshopu a dále kliknutím na ikonku filmového pásu.

Ladislav Hagara | Komentářů: 0
včera 14:11 | Komunita

Některým uživatelům Firefoxu se tento týden do Firefoxu nainstalovalo neznámé rozšíření Looking Glass 1.0.3 (png). Ve fórů Mozilly se řešilo, zda se nejedná o malware. Mozilla později informovala, že se jednalo o reklamu na seriál Mr. Robot. Řadě uživatelů Firefoxu se jednání Mozilly vůbec nelíbilo. Mozilla proto automatickou instalaci doplňku ukončila [Hacker News, reddit].

Ladislav Hagara | Komentářů: 15
16.12. 12:00 | Nová verze

Po cca 3 týdnech od vydání Linux Mintu 18.3 s kódovým jménem Sylvia a prostředími MATE a Cinnamon byla oznámena také vydání s prostředími KDE a Xfce. Podrobnosti v poznámkách k vydání (KDE, Xfce) a v přehledech novinek s náhledy (KDE, Xfce). Linux Mint 18.3 je podporován do roku 2021.

Ladislav Hagara | Komentářů: 6
15.12. 12:55 | Nová verze

Byla vydána verze 17.12.0 KDE Aplikací (KDE Applications). Přehled novinek v kompletním seznamu změn a na stránce s dalšími informacemi. Aplikace, které nebyly dosud portovány na KDE Frameworks 5, byly z KDE Aplikací odstraněny.

Ladislav Hagara | Komentářů: 55
15.12. 03:00 | Komunita

Na Humble Bundle lze získat počítačovou hru Company of Heroes 2 (Wikipedie, YouTube) běžící také v Linuxu zdarma. Speciální akce končí v sobotu v 19:00.

Ladislav Hagara | Komentářů: 0
15.12. 02:00 | Zajímavý software

Christian Kellner představil na svém blogu projekt Bolt řešící bezpečnost rozhraní Thunderbolt 3 na Linuxu. Pomocí příkazu boltctl nebo rozšíření GNOME Shellu lze komunikovat s démonem boltd a například zakázat neznámá zařízení a předejít tak útokům typu Thunderstrike nebo DMA.

Ladislav Hagara | Komentářů: 10
15.12. 01:00 | Nová verze

Po půl roce vývoje od vydání verze 11.0 byla vydána verze 11.1 svobodného softwaru pro vytváření datových úložišť na síti FreeNAS (Wikipedie). Nejnovější FreeNAS je postaven na FreeBSD 11.1. Přehled novinek v příspěvku na blogu. Zdůraznit lze zvýšení výkonu OpenZFS, počáteční podporu Dockeru nebo synchronizaci s cloudovými službami Amazon S3 (Simple Storage Services), Backblaze B2 Cloud, Google Cloud a Microsoft Azure

Ladislav Hagara | Komentářů: 0
14.12. 23:55 | Nová verze

Po dvou měsících vývoje od vydání verze 235 oznámil Lennart Poettering vydání verze 236 správce systému a služeb systemd (GitHub, NEWS).

Ladislav Hagara | Komentářů: 10
14.12. 20:00 | Nová verze Ladislav Hagara | Komentářů: 0
14.12. 19:33 | Pozvánky

Pražská Fedora 27 Release Party, oslava nedávného vydání Fedory 27, se uskuteční 19. prosince od 19:00 v prostorách společnosti Etnetera (Jankovcova 1037/49). Na programu budou přednášky o novinkách, diskuse, neřízený networking atd.

Ladislav Hagara | Komentářů: 0
Jak se vás potenciálně dotkne trend odstraňování analogového audio konektoru typu 3,5mm jack z „chytrých telefonů“?
 (8%)
 (0%)
 (1%)
 (1%)
 (76%)
 (14%)
Celkem 1012 hlasů
 Komentářů: 45, poslední 1.12. 19:00
    Rozcestník

    Dotaz: problem s gcc

    26.8.2006 13:53 secido | skóre: 27
    problem s gcc
    Přečteno: 50×
    Tento kod mi so starsou verziu gcc fungoval:
    Fraction::Fraction(int znum, int zden) {
    num = znum;
    den = zden;
    normalize();
    }
    
    Fraction::Fraction(double f) {
    num = int(f) * 10000;
    num += int((f - int(f))*10000.0);
    den = 10000;
    normalize();
    }
    
    Fraction Fraction::operator+(Fraction b) {
    return Fraction(den*b.num+b.den*num, den*b.den);
    }
    
    ...
    
    c4=-.5+c1
    
    Teraz s pouzitim gcc 4.0.3 dostanem chybu:

    no match for ‘operator+’ in ‘-5.0e-1 + c1’

    Po takejto uprave to chodi:

    c4=Fraction(-.5)+c1

    V com je problem? Nemal by sa implicitne pouzit konstruktor Fraction(double)?

    Odpovědi

    26.8.2006 14:19 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: problem s gcc

    Aby vám tohle prošlo, musel byste použít samostatný operátor, ne metodu. Tedy např.:

    inline Fraction operator + (const Fraction& x, const Fraction& y)
    {
      return Fraction(x.den*y.num+y.den*x.num, x.den*y.den);
    }
    
    26.8.2006 20:51 secido | skóre: 27
    Rozbalit Rozbalit vše Re: problem s gcc
    Skusal som to pridat, ale den a num su private. Radsej uvediem kompletny kod. Trochu som cvicil s C++ pred par rokmi no daleko som sa nedostal, teraz som znovu dostal chut :-).
    fraction.h:
    #ifndef FRACTION_H
    #define FRACTION_H
    
    #include <iostream>
    
    using namespace std;
    
    class Fraction
    {
        int num, den;
    
        int gcd(int, int);
    
        public:
    
        Fraction(int = 0, int = 1);
        Fraction(double);
        Fraction(const Fraction&);
        void normalize();
        Fraction operator+(const Fraction&);
        Fraction operator-();
        Fraction operator-(const Fraction&);
        Fraction operator*(const Fraction&);
        Fraction operator/(const Fraction&);
        const int numerator() const;
        const int denominator() const;
        friend ostream& operator<<(ostream& os, const Fraction& z);
        friend istream& operator>>(istream& is, Fraction& z);
        const double toDouble() const;
    };
    #endif
    
    fraction.cpp:
    #include "fraction.h"
    
    int Fraction::gcd(int a, int b) {
      int c = 1;
      a = (a >= 0) ? a : - a;
      b = (b >= 0) ? b : - b;
      while (c > 0) {
        c = a % b;
        a = b;
        b = c;
      }
      return a;
    }
    
    Fraction::Fraction(int znum, int zden) {
      num = znum;
      den = zden;
      normalize();
    }
    
    Fraction::Fraction(const Fraction& z):num(z.num), den(z.den) {
      cout << "Fraction(const Fraction&) : " << *this << endl;
    }
    
    Fraction::Fraction(double f) {
      num = int(f) * 10000;
      num += int((f - int(f))*10000.0);
      den = 10000;
      normalize();
    }
    
    void Fraction::normalize() {
      int lgcd = gcd(num, den);
      num /= lgcd;
      den /= lgcd;
    }
    
    Fraction Fraction::operator+(const Fraction &b) {
      return Fraction(den*b.num+b.den*num, den*b.den);
    }
    
    Fraction Fraction::operator-() {
      return Fraction(-num, den);
    }
    
    Fraction Fraction::operator-(const Fraction& b) {
      return Fraction(b.den*num-den*b.num, den*b.den);
    }
    
    Fraction Fraction::operator*(const Fraction& b) {
      return Fraction(num*b.num,den*b.den);
    }
    
    Fraction Fraction::operator/(const Fraction& b) {
      return Fraction(num*b.den, den*b.num);
    }
    
    const int Fraction::numerator() const {
      return num;
    }
    
    const int Fraction::denominator() const {
      return den;
    }
    
    ostream& operator<<(ostream& os, const Fraction& z) {
      if(z.den == 1)
        return os << z.num;
      else
        return os << z.num << "/" << z.den;
    }
    
    istream& operator>>(istream& is, Fraction& z) {
      char c;
      is >> z.num;
      is >> c;
      is >> z.den;
      return is;
    }
    
    const double Fraction::toDouble() const
    {
      return double(num)/double(den);
    }
    
    fractest.cpp:
    #include <iostream>
    #include "fraction.h"
    
    #define P(x) cout << "[" #x "] = " << (x) << endl;
    
    /*
    inline Fraction operator+(const Fraction& x, const Fraction& y) {
      return Fraction(x+y);
    }
    */
    
    
    int main()
    {
        Fraction c1(12,123);
        Fraction c2(98);
        Fraction c3(0,1);
        Fraction* c5 = new Fraction(2,3);
    
        P(c1); P(c2); P(c3); P(*c5);
    
        P(c3=c1+c2);
        P(c3=c1-c2);
        P(c3=c1*c2);
        P(c3=c1/c2);
        P(*c5=c1+c2+c3);
        P(c3=c1+c2/c3-c1);
        P(c3=(c1+c2)/(c3-c1));
    
        Fraction c4 = c3;
        P(c4);
        P(c4=c1+5+5.5);
        P(c4=7);
        P(c4=-.5);
        P(c4=c4+c1);
        P(c4=Fraction(-.5)+c1);
    //    P(c4=-.5+c1);
        P(c4=c1-.5);
        P(c4.toDouble());
    //    P(double(c4));
    
        delete c5;
        return 0;
    }
    
    26.8.2006 22:22 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: problem s gcc

    Jestli je problém jen v tom, že jsou private, tak buď v implementaci operátoru použíjte přístupové metody numerator() a denominator() nebo ten operátor deklarujte jako friend.

    Mimochodem, z logiky věci by asi metodu gcd() bylo v tomto případě vhodnější deklarovat jako static.

    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.