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 23:22 | Komunita

Na dnes, poslední středu v březnu, připadá Document Freedom Day (DFD, Wikipedie), jenž má upozornit na výhody otevřených standardů a formátů dokumentů. Organizátoři se rozhodli, že letos proběhne Document Freedom Day dvakrát. Druhý letošní Document Freedom Day proběhne 26. dubna.

Ladislav Hagara | Komentářů: 0
včera 12:33 | Nová verze

Byla vydána nová stabilní verze 1.8 (1.8.770.50) webového prohlížeče Vivaldi (Wikipedie). Z novinek vývojáři zdůrazňují vylepšenou historii prohlížení. Ukázka na YouTube. Chromium bylo aktualizováno na verzi 57.0.2987.111.

Ladislav Hagara | Komentářů: 0
včera 05:55 | Zajímavý projekt

Google na svém blogu věnovaném open source představil portál Google Open Source informující mimo jiné o více než 2000 open source projektech vyvíjených nebo používaných v Googlu.

Ladislav Hagara | Komentářů: 0
včera 03:33 | IT novinky

Pro společnost Red Hat skončil 28. února fiskální rok 2017. Dle finančních výsledků bylo čtvrté čtvrtletí, stejně jako celý fiskální rok 2017, opět úspěšné. Tržby jsou zvyšovány již 60 čtvrtletí v řadě. Za čtvrté čtvrtletí 2017 to bylo 629 milionů dolarů, tj. meziroční nárůst 16 %. Tržby za celý fiskální rok činily 2,4 miliardy dolarů, tj. meziroční nárůst 18 %.

Ladislav Hagara | Komentářů: 2
28.3. 18:22 | Bezpečnostní upozornění

V balíčku eject, příkaz pro vysunutí CD/DVD z mechaniky, v linuxových distribucích Ubuntu (USN-3246-1) a Debian (#858872) byla nalezena bezpečnostní chyba CVE-2017-6964 zneužitelná k lokální eskalaci práv. Linuxové distribuce používající eject z balíčku util-linux nejsou zranitelné.

Ladislav Hagara | Komentářů: 15
28.3. 05:55 | Komunita

Dries Buytaert, autor a vedoucí projektu Drupal a prezident Drupal Association, požádal soukromě před několika týdny Larryho Garfielda, jednoho z klíčových vývojářů Drupalu, aby projekt Drupal opustil. Larry Garfield minulý týden na svých stránkách napsal, že důvodem jsou jeho BDSM praktiky a rozpoutal tím bouřlivou diskusi. Na druhý den reagoval Dries Buytaert i Drupal Association. Pokračuje Larry Garfield [reddit].

Ladislav Hagara | Komentářů: 55
28.3. 04:44 | Humor

Společnost SAS zveřejnila na svých stránkách studii s názvem Open Source vs Proprietary: What organisations need to know (pdf). Organizace by měly například vědět, že ideální je mix 40 % open source softwaru a 60 % proprietárního softwaru [Slashdot].

Ladislav Hagara | Komentářů: 12
27.3. 23:33 | Zajímavý software

Byl vydán ShellCheck ve verzi 0.4.6. Jedná se o nástroj pro statickou analýzu shellových skriptů. Shellové skripty lze analyzovat na webové stránce ShellChecku, v terminálu nebo přímo z textových editorů. Příklady kódů, na které analýza upozorňuje a doporučuje je přepsat. ShellCheck je naprogramován v programovacím jazyce Haskell. Zdrojové kódy jsou k dispozici na GitHubu pod licencí GPLv3.

Ladislav Hagara | Komentářů: 0
27.3. 23:33 | Pozvánky

Czech JBoss User Group zve na setkání JBUG v Brně, které se koná ve středu 5. dubna 2017 v prostorách Fakulty informatiky Masarykovy univerzity v místnosti A318 od 18:00. Přednáší Pavol Loffay na téma Distributed Tracing and OpenTracing in Microservice Architecture.

… více »
mjedlick | Komentářů: 0
27.3. 11:33 | Zajímavý článek

Národní centrum kybernetické bezpečnosti (NCKB) vypracovalo (pdf) 26 podrobných bezpečnostních doporučení pro síťové správce. Tato doporučení jsou nastavena tak, aby je bylo možné aplikovat v každé instituci. Jsou rozdělena na tři základní části: bezpečnost infrastruktury, bezpečnost stanic a serverů a bezpečnost uživatelů.

Ladislav Hagara | Komentářů: 17
Jak se stavíte k trendu ztenčování přenosných zařízení (smartphony, notebooky)?
 (14%)
 (2%)
 (72%)
 (3%)
 (10%)
Celkem 964 hlasů
 Komentářů: 72, poslední 1.3. 11:16
    Rozcestník

    Dotaz: Problém v C

    7.9.2009 22:02 jirka36 | skóre: 2
    Problém v C
    Přečteno: 936×

    dobrý den, potřeboval bych poradit algorytmus na nahrazení více mezer pouze jednou...tzn. kdyz na vstup zadam: ahoj      jak      se   vede. tak aby to vypsalo ahoj jak se vede

    Odpovědi

    7.9.2009 22:23 dad
    Rozbalit Rozbalit vše Re: Problém v C

    man strtok

    7.9.2009 22:27 Vojtěch Horký | skóre: 39 | blog: Vojtův zápisník | Praha
    Rozbalit Rozbalit vše Re: Problém v C
    algorytmus
    Začíná to pěkně ;-).
    nahrazení více mezer
    Co třeba číst znak po znaku a pokud předchozí i současný znak jsou oba mezera, tak nevypsat nic a jinak vypsat ten současný?
    I am always ready to learn although I do not always like to be taught. (W. Churchill)
    7.9.2009 22:35 Roman Došek | skóre: 17 | blog: flare
    Rozbalit Rozbalit vše Re: Problém v C
    Domácí úkol? :)
    #define DELKARETEZCE 20
    
    void StripSpaces(char * retezec);
    
    int main()
    {
     char * retezec;
     retezec=(char *)malloc(DELKARETEZCE * sizeof(retezec);
     scanf(%s,retezec);
     StripSpaces(retezec);
     return 0;
    }
    
    void StripSpaces(char * retezec)
    {
     char * buffer;
     char PredchoziZnak = 'a';
     int i = 0;
     buffer = (char *)malloc(DELKARETEZCE * sizeof(buffer);
     for(i = 0; i < DELKARETEZCE; i++)
     {
      if(PredchoziZnak != ' ') buffer[0] = retezec[0];
      PredchoziZnak = retezec[0];
     }
    }
    
    Nic jednodussiho me nenapadlo...
    7.9.2009 22:36 Roman Došek | skóre: 17 | blog: flare
    Rozbalit Rozbalit vše Re: Problém v C
    A chyběj mi tam free(), už je moc pozdě.
    7.9.2009 22:43 Roman Došek | skóre: 17 | blog: flare
    Rozbalit Rozbalit vše Re: Problém v C
    #define DELKARETEZCE 20
    
    void StripSpaces(char * retezec);
    
    int main()
    {
     char * retezec;
     retezec=(char *)malloc(DELKARETEZCE * sizeof(retezec);
     scanf(%s,retezec);
     StripSpaces(retezec);
     free(retezec);
     return 0;
    }
    
    void StripSpaces(char * retezec)
    {
     char * buffer;
     char PredchoziZnak = 'a';
     int i = 0;
     buffer = (char *)malloc(DELKARETEZCE * sizeof(buffer);
     for(i = 0; i < DELKARETEZCE; i++)
     {
      if(PredchoziZnak != ' ' && buffer[i] != ' ') buffer[i] = retezec[i];
      PredchoziZnak = retezec[i];
     }
     strcpy(retezec,buffer);
     free(buffer);
    }
    
    7.9.2009 22:46 Vojtěch Horký | skóre: 39 | blog: Vojtův zápisník | Praha
    Rozbalit Rozbalit vše Re: Problém v C
    StripSpaces(retezec);
    free(retezec);
    
    A taky by nebylo na škodu tu krásu (myslim, ten řetězec bez násobných mezer) vypsat :-D. Ale to nechme laskavému čtenáři k vyřešení.
    I am always ready to learn although I do not always like to be taught. (W. Churchill)
    7.9.2009 22:55 Let_Me_Be | skóre: 20 | blog: cat /proc/idea/current | Brno
    Rozbalit Rozbalit vše Re: Problém v C
    Trochu zbytecna cela ta funkce na odstranovani mezer, kdyz %s ignoruje mezery :-D
    Linked in profil - Můj web - Nemůžete vyhrát hádku s blbcem. Nejdřív vás stáhne na svoji úroveň a pak ubije zkušenostmi.
    7.9.2009 23:00 Roman Došek | skóre: 17 | blog: flare
    Rozbalit Rozbalit vše Re: Problém v C
    Rejpalové si nahradí scanf() gets() :-D.
    8.9.2009 09:11 volca
    Rozbalit Rozbalit vše Re: Problém v C

    Tohle by nefungovalo... Je potreba mit druhej citac na ten cilovej buffer.

    #define DELKARETEZCE 20
    
    void StripSpaces(char * retezec);
    
    int main()
    {
     char * retezec;
     retezec=(char *)malloc(DELKARETEZCE * sizeof(retezec);
     scanf(%s,retezec);
     StripSpaces(retezec);
     free(retezec);
     return 0;
    }
    
    void StripSpaces(char * retezec)
    {
     char * buffer;
     char PredchoziZnak = 'a';
     int i = 0; 
     int j = 0;
     buffer = (char *)malloc(DELKARETEZCE * sizeof(buffer);
     for(i = 0; i < DELKARETEZCE; i++)
     {
      if(PredchoziZnak != ' ' && buffer[i] != ' ') buffer[j++] = retezec[i];
      PredchoziZnak = retezec[i];
     }
     strcpy(retezec,buffer);
     free(buffer);
    }
    
    e.lisak avatar 8.9.2009 06:52 e.lisak | skóre: 23
    Rozbalit Rozbalit vše Re: Problém v C
    while, strstr, strcpy + nejake ty zavorky a par pismenek okolo
    8.9.2009 08:27 R
    Rozbalit Rozbalit vše Re: Problém v C
    Bez strcpy(), malloc() a free():
    #include <stdio.h>
    #include <string.h>
    
    char *strip_spaces(char *s) {
        int i, pos = 0;
        for (i = 0; i < strlen(s); i++) {
            s[pos] = s[i];
            if (s[i] != ' ' | (s[i] == ' ' && (i < 1 || s[i-1] != ' ')))
                pos++;
        }
        s[pos] = 0;
        return s;
    }
    
    int main(void) {
        char *s = strdup(" toto   je retazec  ");
        printf("'%s'\n", strip_spaces(s));
    }
    
    8.9.2009 08:58 pht | skóre: 48 | blog: pht
    Rozbalit Rozbalit vše Re: Problém v C
    Nikdy nemodifikujte vstupní argument, zvlášť když se tváříte, že vracíte nějakou návratovou hodnotu.
    In Ada the typical infinite loop would normally be terminated by detonation.
    8.9.2009 10:52 R
    Rozbalit Rozbalit vše Re: Problém v C
    sprintf() tiez meni argument a svet sa nezrutil. Namiesto "char *" si tam mozes dat "int" a na koniec "return pos" namiesto "return s". Vsetko zalezi od toho, na co ma ta funkcia sluzit.

    Akurat je vhodne napisat do komentara, ze to modifikuje s (keby si to niekto nahodou v tych 8 riadkoch nevsimol).
    8.9.2009 10:59 pht | skóre: 48 | blog: pht
    Rozbalit Rozbalit vše Re: Problém v C
    sprintf() tiez meni argument a svet sa nezrutil.
    Funkce sprintf má jasně dáno, že do toho argumentu bude zapisovat, Váš příklad je zavádějící k printf("`%s' -> `%s'\n", s, strip_spaces(s)), ale ouha.
    Akurat je vhodne napisat do komentara, ze to modifikuje s (keby si to niekto nahodou v tych 8 riadkoch nevsimol).

    To je určitě vhodné, ba přímo nutné. A taky je jedna věta v lidském jazyce kratší a srozumitelnější, než 8 řádek v C, které nemusí být navíc vždy k dispozici.
    In Ada the typical infinite loop would normally be terminated by detonation.
    8.9.2009 11:12 R
    Rozbalit Rozbalit vše Re: Problém v C
    Ten moj kod ma jeden vykonnostny problem: v kazdom precohode cyklom sa robi znovu strlen(), pretoze retazec sa modifikuje. Je to potom pomalsie ako kod od rhodosa. Ked sa vsak strlen() vyberie pred cyklus, dost sa to zrychli a je to potom rychlejsie.

    Maly benchmark (10 000 000 prechodov):

    O0:

    ja: 12.922s, po oprave: 6.632s

    rhodos: 7.587s

    O1:

    ja: 26.682s, po oprave: 3.870s

    rhodos: 12.938s

    (dost divna optimalizacia!)

    O2:

    ja: 9.498s, po oprave: 2.743s (!!)

    rhodos: 7.397s
    8.9.2009 11:52 pht | skóre: 48 | blog: pht
    Rozbalit Rozbalit vše Re: Problém v C
    Jelikož bych k těm měřením odhadoval rozptyl tak 1s, tak druhé a třetí nevypovídají proti sobě nic.
    In Ada the typical infinite loop would normally be terminated by detonation.
    8.9.2009 13:06 R
    Rozbalit Rozbalit vše Re: Problém v C
    Co druhe a tretie nevypoveda nic?

    Inak ten rozptyl je "trochu" lepsi ako 1s:
    $ for i in `seq 1 10`; do time ./a.out; done
    
    real    0m2.720s
    user    0m2.572s
    sys     0m0.024s
    
    real    0m2.678s
    user    0m2.600s
    sys     0m0.000s
    
    real    0m2.692s
    user    0m2.612s
    sys     0m0.008s
    
    real    0m2.691s
    user    0m2.604s
    sys     0m0.008s
    
    real    0m2.675s
    user    0m2.600s
    sys     0m0.016s
    
    real    0m2.697s
    user    0m2.608s
    sys     0m0.004s
    
    real    0m2.685s
    user    0m2.600s
    sys     0m0.012s
    
    real    0m2.692s
    user    0m2.596s
    sys     0m0.004s
    
    real    0m2.690s
    user    0m2.596s
    sys     0m0.008s
    
    real    0m2.688s
    user    0m2.600s
    sys     0m0.000s
    
    
    8.9.2009 15:43 pht | skóre: 48 | blog: pht
    Rozbalit Rozbalit vše Re: Problém v C
    Zkuste to na vzorku 2000 spuštění, pokud možno ne hned po sobě, a dejte výsledky do grafu, a pak uvidíme.
    In Ada the typical infinite loop would normally be terminated by detonation.
    8.9.2009 15:59 R
    Rozbalit Rozbalit vše Re: Problém v C
    A vysledkom ma byt co? Bude tam 1900 cisiel okolo 2.6-2.7s a zvysok nejake nezmysly (kedze na PC cely den robim).
    8.9.2009 20:02 pht | skóre: 48 | blog: pht
    Rozbalit Rozbalit vše Re: Problém v C
    Statistika je o těch nesmyslech.
    In Ada the typical infinite loop would normally be terminated by detonation.
    8.9.2009 23:38 R
    Rozbalit Rozbalit vše Re: Problém v C
    Preco sem pleties statistiku? Ja nemeram priemernu dobu vykonania programu na bezne zatazenom systeme, ale dobu vykonania programu na nezatazenom systeme.
    9.9.2009 09:43 pht | skóre: 48 | blog: pht
    Rozbalit Rozbalit vše Re: Problém v C
    priemernu
    Protože ji sem pleteš ty? :-)
    In Ada the typical infinite loop would normally be terminated by detonation.
    8.9.2009 09:05 Sten Fil | skóre: 4
    Rozbalit Rozbalit vše Re: Problém v C

    void vyhozeni_mezer (const char* input, char* output)
    {
        int output_size = 0;

        for (int i = 0; i < strlen (input); i++)
        {
            if (input[i] != ' ')
            {
                output[output_size] = input[i];
                output_size++;
            }
            else if ((output_size == 0) ||
                (output[output_size] != ' '))
            {
                output[output_size] = input[i];
                output_size++;
            }
        }

        output[output_size] = 0;

        return;
    }

    8.9.2009 09:11 Sten Fil | skóre: 4
    Rozbalit Rozbalit vše Re: Problém v C

    oprava:

    else if ((output_size == 0) ||
             (output[output_size - 1] != ' '))

    8.9.2009 11:28 Sten Fil | skóre: 4
    Rozbalit Rozbalit vše Re: Problém v C

    Pro replace by melo stacit poslat do input i output stejny ukazatel.

    Josef Kufner avatar 9.9.2009 00:41 Josef Kufner | skóre: 67
    Rozbalit Rozbalit vše Re: Problém v C
    Co třeba něco jako toto: ?
    
    char *strdup_no_dup_space(const char *src)
    {
      char *dest = (char *) malloc(strlen(src));
      char *p_src = src, *p_dest = dest;
    
      if (dest && (*p_dest = *p_src++)) {
        while ((*p_dest == ' ' && *p_src == ' ') || (*(++p_dest) = *p_src))
          p_src++;
      }
      return dest;
    }
    
    
    Hello world ! Segmentation fault (core dumped)
    9.9.2009 12:10 dark
    Rozbalit Rozbalit vše Re: Problém v C

    A co null terminator?

    Josef Kufner avatar 9.9.2009 13:38 Josef Kufner | skóre: 67
    Rozbalit Rozbalit vše Re: Problém v C
    Kopírování probíhá před kontrolou, takže se zkopíruje zakončovací nula a pak to teprve skončí.
    Hello world ! Segmentation fault (core dumped)
    9.9.2009 13:55 dark
    Rozbalit Rozbalit vše Re: Problém v C

    Nebudu napínat, pro chudinku nulu nemusí být místo :)

    Josef Kufner avatar 9.9.2009 14:06 Josef Kufner | skóre: 67
    Rozbalit Rozbalit vše Re: Problém v C
    Aaaaa… taková trapná chyba… tak znovu a lépe. A jako bonus tomu přidáme kontrolu na NULL na vstupu aby to nepadalo na hubu a odstraníme jeden warning.
    char *strdup_no_dup_space(const char *src)
    {
      if (src == NULL)
        return NULL;
    
      char *dest = (char *) malloc(strlen(src) + 1);
      char *p_src = src;
      const char *p_dest = dest;
    
      if (dest && (*p_dest = *p_src++)) {
        while ((*p_dest == ' ' && *p_src == ' ') || (*(++p_dest) = *p_src))
          p_src++;
      }
      return dest;
    }
    Teď už by to mělo být dokonalé :-D
    Hello world ! Segmentation fault (core dumped)
    Josef Kufner avatar 9.9.2009 14:08 Josef Kufner | skóre: 67
    Rozbalit Rozbalit vše Re: Problém v C
    Jsem já to ale kus vola.
    char *strdup_no_dup_space(const char *src)
    {
      if (src == NULL)
        return NULL;
    
      char *dest = (char *) malloc(strlen(src) + 1);
      const char *p_src = src;
      char *p_dest = dest;
    
      if (dest && (*p_dest = *p_src++)) {
        while ((*p_dest == ' ' && *p_src == ' ') || (*(++p_dest) = *p_src))
          p_src++;
      }
      return dest;
    }
    Hello world ! Segmentation fault (core dumped)
    9.9.2009 21:13 merlin111 | skóre: 15
    Rozbalit Rozbalit vše Re: Problém v C
    Může někdy nastat že '\0' se nerovná 0 ?
    Každá ulice je slepá jen do té doby, než si opatříš buldozer.
    Josef Kufner avatar 9.9.2009 22:16 Josef Kufner | skóre: 67
    Rozbalit Rozbalit vše Re: Problém v C
    Ne.

    Tuším že důvod se jmenuje „implicitní typové konverze“ nebo tak nějak.
    Hello world ! Segmentation fault (core dumped)
    9.9.2009 22:45 merlin111 | skóre: 15
    Rozbalit Rozbalit vše Re: Problém v C
    Já vím, ale mě spíš šlo o to jestli fakt neexistují nějaké ne ASCII systémy kde platí třeba '\0' = 5. Tedy otázka absolutní /úchylné :-)/ přenositelnosti.
    Každá ulice je slepá jen do té doby, než si opatříš buldozer.
    Josef Kufner avatar 9.9.2009 23:52 Josef Kufner | skóre: 67
    Rozbalit Rozbalit vše Re: Problém v C
    Pokud napíšeš '\5', tak to znamená byte o hodnotě pět – to lomítko číslo přímo udává hodnotu. Pokud napíšeš '5', tak to závisí na tom, jakou ascii tabulku systém používá.
    Hello world ! Segmentation fault (core dumped)
    10.9.2009 03:52 dark
    Rozbalit Rozbalit vše Re: Problém v C

    Někoho by mohlo zaskočit třeba toto:

      int isEqual1 = (int)('\377' == 255);
      int isEqual2 = ((int)'\377' == 255);
      int isEqual3 = ((unsigned int)'\377' == (unsigned int)255);
      int isEqual4 = ((unsigned int)((unsigned char)'\377') == (unsigned int)255);
    
      printf("isEqual1==%d\n", isEqual1);
      printf("isEqual2==%d\n", isEqual2);
      printf("isEqual3==%d\n", isEqual3);
      printf("isEqual4==%d\n", isEqual4);
    
    
    9.9.2009 23:52 Roman Došek | skóre: 17 | blog: flare
    Rozbalit Rozbalit vše Re: Problém v C
    Proč v tom případě nepoužít rovnou '\0', to je jako kdybyste používal číslo pro znak nového řádku, třeba. Ještě jsem v žádném C kódu neviděl že by někdo používal neescapovanou variantu, takže by mě to také docela zajímalo. Jestli to správně chápu, tak pokud odescapujete normální číslo tak by to mělo nahradit číslem znaku v osmičkové soustavě...
    Josef Kufner avatar 10.9.2009 21:50 Josef Kufner | skóre: 67
    Rozbalit Rozbalit vše Re: Problém v C
    To je jen otázka čitelnosti. Jinak je to jedno a překladač to nějak pořeší.
    Hello world ! Segmentation fault (core dumped)
    9.9.2009 13:16 R
    Rozbalit Rozbalit vše Re: Problém v C
    Sice to funguje, ale ten kod je taky humus, ze sa mi ani nechce zistovat, ci je to naozaj dobre.
    Josef Kufner avatar 9.9.2009 13:29 Josef Kufner | skóre: 67
    Rozbalit Rozbalit vše Re: Problém v C
    Dík za info, psal jsem to jen tak z hlavy a nechtělo se mi to testovat ;-)
    Hello world ! Segmentation fault (core dumped)
    9.9.2009 13:34 dark
    Rozbalit Rozbalit vše Re: Problém v C

    Dobře to není, aneb programátorská hádanka číslo 4 :)

    Josef Kufner avatar 9.9.2009 13:47 Josef Kufner | skóre: 67
    Rozbalit Rozbalit vše Re: Problém v C
    Co se ti na tom nelíbí? Nekontroluje to zda v src nejsou blbosti, ale jinak…
    Hello world ! Segmentation fault (core dumped)
    9.9.2009 15:37 pht | skóre: 48 | blog: pht
    Rozbalit Rozbalit vše Re: Problém v C
    Jeden z mých tipů by směřoval na prioritu operátorů.
    In Ada the typical infinite loop would normally be terminated by detonation.
    9.9.2009 17:49 dark
    Rozbalit Rozbalit vše Re: Problém v C

    Už je to vyřešené. Operátory jsou právě v pohodě, takto se v C běžně píše, a připadá mi to i přehledné. Horší to bylo s alokací paměti. Občas se stane, že někdo zapomene připočítat NULL terminator (proto mám osobně radši nějakou knihovnu, která obsahuje String, a postará se o to).

    Ten původní kód by mu ve Visual Studiu v debug režimu asi vyhodil error (mám pocit, že free() detekuje přepis hned za alokovaným prostorem), v linuxu by si stěžoval valgrind (popřípadě přímo glibc, pokud by měl string ideální velikost).

    10.9.2009 10:29 Martin | skóre: 10 | blog: Nádraží Perdido
    Rozbalit Rozbalit vše Re: Problém v C
    Jestli se zase někdy nachomýtnu v diskuzi o tom, jak je psaní v C, žonglování s pointery, ukončovacími nulami a dalšími lahůdkami čirý masochismus, tak určitě přihodím link na tuto diskuzi. :-D Tak jednoduchý dotaz a 40 odpovědí, z nichž většina se zaobírá opravováním zapeklitých chyb zaslaných řešení. :-D

    (Za prvé: brát s rezervou a s humorem. Za druhé: mám Céčko rád, takže nic proti němu. Za třetí: chybičky se samozřejmě občas vloudí, ale tohle už mi přišlo vážně legrační.)
    10.9.2009 10:48 Ladicek | skóre: 28 | blog: variace | Havlíčkův brod
    Rozbalit Rozbalit vše Re: Problém v C
    Jestli se zase někdy nachomýtnu v diskuzi o tom, jak je psaní v C, žonglování s pointery, ukončovacími nulami a dalšími lahůdkami čirý masochismus
    O tom není třeba diskutovat, to je zřejmé :-D

    (A předpokládám, že též bylo zřejmé, že tuhle poznámku si neodpustím.)
    Ještě na tom nejsem tak špatně, abych četl Viewegha.
    10.9.2009 12:05 Martin | skóre: 10 | blog: Nádraží Perdido
    Rozbalit Rozbalit vše Re: Problém v C
    Se spíš divím, že ses neozval už dřív a musel jsem to tu napsat já. :-D
    10.9.2009 11:06 pht | skóre: 48 | blog: pht
    Rozbalit Rozbalit vše Re: Problém v C
    Jojo, taky bych to tak viděl.
    In Ada the typical infinite loop would normally be terminated by detonation.
    10.9.2009 14:15 Roman Došek | skóre: 17 | blog: flare
    Rozbalit Rozbalit vše Re: Problém v C
    Na druhou stranu je to krásná ukázka toho, jak se dá taková jednoduchá funkce napsat několika způsoby, na každý způsob bude mít jiný vliv optimalizace a v každém úplně jiná chyba. Kdybych ten svůj kód nepsal přímo do komentáře, tak bych v tom možná chybu neudělal, tipuju že u ostatních je to podobně :-D.
    10.9.2009 14:56 Martin | skóre: 10 | blog: Nádraží Perdido
    Rozbalit Rozbalit vše Re: Problém v C
    Ta funkce se dá napsat miliardou způsobů i v Perlu, ale nehrozí tam nějaké odstřelování paměti, ukončovací byte a podobně. :-D Zkrátka tohle je nádherná ukázka toho, jak se dá v Céčku krásně žonglovat se všelijakýma fintičkama, ale i zkušený člověk si při tom prostě může nabít držku. Vzpomínám si, jak jsem v prváku na konci semestru psal v Céčku domácí úkol—asi na 200-300 řádků "alignátor" textu (doprava, doleva, na střed a do zarovnaného bloku na zadanou šířku řádky, se zalamováním a já už nevím čím). Nabíjel jsem si hubu na stejných věcech jako diskutující tady a odnesl jsem si z toho jednu z nejcennějších zkušeností ve svém dosavadním informatickém výcviku. :-)

    Určitě bys ji udělal, maximálně bys ji tak mnohem déle hledal, protože "víc očí víc vidí". :-P (vtip... nebo ne? :-))
    10.9.2009 15:22 pht | skóre: 48 | blog: pht
    Rozbalit Rozbalit vše Re: Problém v C
    Sluší se dodat, že v C++ by to dopadlo podobně (s tou pamětí).
    In Ada the typical infinite loop would normally be terminated by detonation.
    11.9.2009 01:31 Sinuhet | skóre: 31
    Rozbalit Rozbalit vše Re: Problém v C

    Opravdu?

    std::string str_no_dup_space(const std::string& str)
    {
            std::string ret;
    
            std::string::const_iterator it = str.begin();
            bool space = false;
            for(; it != str.end(); ++it) {
                    if( *it == ' ' ) {
                            if( !space )
                                    ret += ' ';
    
                            space = true;
                    } else {
                            ret += *it;
                            space = false;
                    }
            }
    
            return ret;
    }
    11.9.2009 07:04 pht | skóre: 48 | blog: pht
    Rozbalit Rozbalit vše Re: Problém v C
    To je sice pěkné, ale tím jen maskujete podstatu věci. Pokud půjdete do něčeho složitějšího, tak tam někde nějaké "new" použijete.
    In Ada the typical infinite loop would normally be terminated by detonation.
    10.9.2009 15:30 Roman Došek | skóre: 17 | blog: flare
    Rozbalit Rozbalit vše Re: Problém v C
    Přesně takovýhle úkol jsem dělal v půlce druhého semestru. Původně jsem sice měl rozdělaný archivační program používající Huffmanovo kódování, ale nějak jsem to podcenil a když mi zbývalo do deadline 3 hodiny, tak jsem si vybral jiný projekt(naštěstí to nebylo pevně vybrané). Samotné napsání netrvalo moc dlouho, ale těch chyb tam :-D. Nakonec jsem za to dostal plný počet bodů ale tim kódem bych se nikde nechlubil. :-D
    10.9.2009 15:33 pht | skóre: 48 | blog: pht
    Rozbalit Rozbalit vše Re: Problém v C
    Diplomka? :P
    In Ada the typical infinite loop would normally be terminated by detonation.
    10.9.2009 15:37 Roman Došek | skóre: 17 | blog: flare
    Rozbalit Rozbalit vše Re: Problém v C
    Kdepak, diplomku budu mít za dlouho :-D
    10.9.2009 18:58 Martin | skóre: 10 | blog: Nádraží Perdido
    Rozbalit Rozbalit vše Re: Problém v C
    3 hodiny? To seš dobrej, já to dělal celej víkend. :-D Na svou obranu musím říct, že ta chyba s ukončovacím bytem byla fakt rafinovaným a zapeklitým způsobem schovaná. :-D

    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.