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 04:44 | Nová verze

    Byla vydána nová verze 2.4.68 svobodného multiplatformního webového serveru Apache (httpd). Řešeno je mimo jiné 13 zranitelností.

    Ladislav Hagara | Komentářů: 0
    včera 22:44 | IT novinky

    Apple na své vývojářské konferenci WWDC26 (Worldwide Developers Conference, keynote) představil řadu novinek. Vypíchnout lze novou generaci Apple Intelligence a zbrusu novou Siri, která dostala název Siri AI. Kvůli Aktu o digitálních trzích (DMA) však funkce Siri AI nebudou v systémech iOS 27 a iPadOS 27 k dispozici uživatelům v Evropské unii.

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

    Byla vydána nová verze 1.18.0 distribučního frameworku Flatpak (Wikipedie), tj. technologie umožňující distribuovat aplikace v podobě jednoho instalačního souboru na různé linuxové distribuce a jejich různá vydání. Přehled novinek na GitHubu. Vypíchnout lze podporu rozhraní /dev/kfd pro výpočty na kartách AMD (AMDKFD).

    Ladislav Hagara | Komentářů: 0
    včera 20:44 | Nová verze

    aMule (Wikipedie), tj. multiplatformní klient pro peer-to-peer sdílení souborů pro sítě eD2k and Kademlia, byl po více než pěti letech od vydání poslední verze 2.3.3, vydán v nové major verzi 3.0.0 (GitHub). S novou webovou stránkou a dokumentací.

    Ladislav Hagara | Komentářů: 5
    včera 12:55 | IT novinky

    Byly vyhlášeni vítězové a zveřejněny vítězné zdrojové kódy (YouTube, GitHub) již 29. ročníku soutěže International Obfuscated C Code Contest (IOCCC), tj. soutěže o nejnepřehlednější (nejobfuskovanější) zdrojový kód v jazyce C.

    Ladislav Hagara | Komentářů: 0
    včera 12:44 | IT novinky

    Evropská komise předložila evropský balíček pro technologickou suverenitu, tedy soubor opatření, která mají posílit kapacity EU v oblasti polovodičů, umělé inteligence, cloudu a open source. To Evropě pomůže stát se lídrem v oblasti umělé inteligence, posílit její digitální autonomii a vytvářet podmínky pro udržitelnější digitální budoucnost.

    Ladislav Hagara | Komentářů: 11
    včera 04:44 | Nová verze

    OpenCV (Open Source Computer Vision, Wikipedie), tj. open source multiplatformní knihovna pro zpracování obrazu a počítačové vidění, byla vydána v nové major verzi 5.

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

    Byla vydána nová verze 9.7 multiplatformní digitální pracovní stanice pro práci s audiem (DAW) Ardour. Přehled novinek, vylepšení a oprav v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 0
    5.6. 18:22 | Komunita

    Vývojáři webového prohlížeče Ladybird dnes oznámili, že mění způsob vývoje. S blížícím se vydáním alfa verze přestávají přijímat veřejné pull requesty. Všechny otevřené veřejné pull requesty budou uzavřeny. Tým nedokáže garantovat bezpečnost AI generovaných pull requestů.

    Ladislav Hagara | Komentářů: 3
    5.6. 17:33 | Zajímavý software

    OpenLogi (GitHub) je open source náhrada aplikace Logi Options+ pro přizpůsobení myší od společnosti Logitech. Zatím běží pouze na macOS.

    Ladislav Hagara | Komentářů: 4
    Které desktopové prostředí na Linuxu používáte?
     (11%)
     (8%)
     (2%)
     (15%)
     (31%)
     (3%)
     (6%)
     (3%)
     (15%)
     (26%)
    Celkem 1853 hlasů
     Komentářů: 30, poslední 3.4. 20:20
    Rozcestník


    Dotaz: implementace cyklu For pomocí While v C

    2.6.2013 09:23 Maruška
    implementace cyklu For pomocí While v C
    Přečteno: 809×
    Ahojte, jak by se implementoval cyklus for pomoci cyklu while v C? Slo by to treba nejak pomoci konstrukce do-while anebo i jinak? Diky!

    M.

    Řešení dotazu:


    Odpovědi

    Řešení 1× (Vojtěch Trefný)
    2.6.2013 09:43 JMP | skóre: 30
    Rozbalit Rozbalit vše Re: implementace cyklu For pomocí While v C
    vzhledem k podivnosti požadavku to vypadá na školní zadání

    zkuste to vyřešit sama

    [hint] zkouněte, jak funguje cyklus for, potom omrkněte cyklus while a nakonec zjistěte jak inkrementovat... :-) [/hint]
    2.6.2013 18:06 Maruška
    Rozbalit Rozbalit vše Re: implementace cyklu For pomocí While v C
    něco udělanýho mám, ale je to taková neefektivní slátanina :-/
    2.6.2013 18:11 potato
    Rozbalit Rozbalit vše Re: implementace cyklu For pomocí While v C
    for a while cyklus existují jako dvě různé konstrukce z nějakého důvodu. Pokud je něco elegantní vyjádřit jednou, pomocí druhé to může být škaredé. Kde je přesně problém?
    Řešení 2× (DarkKnightCZ, Vojtěch Trefný)
    2.6.2013 11:35 Radovan Garabik
    Rozbalit Rozbalit vše Re: implementace cyklu For pomocí While v C
    #include <stdio.h>
    
    #define do(x) for(x) {
    #define while }
    
    void main(void) {
        unsigned short i;
        do (i=0; i<10; i++)
            printf("%i\n", i);
        while;
    }
    
    
    
    2.6.2013 15:01 mankind_boost
    Rozbalit Rozbalit vše Re: implementace cyklu For pomocí While v C
    Luxusní :-D
    2.6.2013 18:05 Maruška
    Rozbalit Rozbalit vše Re: implementace cyklu For pomocí While v C
    není mi jasné to "define" Je i jiný způsob prosím?
    2.6.2013 18:16 potato
    Rozbalit Rozbalit vše Re: implementace cyklu For pomocí While v C
    Pravděpodobně existuje i nějaký zvrácenější způsob, ale zrovna mě žádný nenapadá.
    2.6.2013 19:06 w4rr10r
    Rozbalit Rozbalit vše Re: implementace cyklu For pomocí While v C
    Já bych tam nějak zamotal zásobník.
    3.6.2013 10:53 ...
    Rozbalit Rozbalit vše Re: implementace cyklu For pomocí While v C
    no protoze jde vyhradne jen o ten cyklus, tak by to mohlo i forkovat :-D
    Bystroushaak avatar 2.6.2013 19:52 Bystroushaak | skóre: 36 | blog: Bystroushaakův blog | Praha
    Rozbalit Rozbalit vše Re: implementace cyklu For pomocí While v C
    Pořád by to ještě mohla být rekurzivní funkce, kde v každém volání while proběhne právě jednou :D
    3.6.2013 09:28 kuka
    Rozbalit Rozbalit vše Re: implementace cyklu For pomocí While v C
    Jen pro poradek - toto v zadnem pripade neni spravne reseni, protoze se tam "konstrukce do-while" jazyka C vubec nepouziva. Je to jen vtip, mozna dobry, vyuzivajici nepresnou formulaci puvodniho dotazu.
    2.6.2013 19:51 fabulator
    Rozbalit Rozbalit vše Re: implementace cyklu For pomocí While v C
    Tohle je kus stareho kodu z Fortranu 66 nebo Basicu prepsany do C:
    int main()
    {
      int i = 1;
      int n = 7;
     label_start:
      i = i + 1;
      if( i > n ) goto label_end;
      /* do work */
      goto label_start;
     label_end:
      return 0;
    }
    
    Na vysvetlenou. Nekonecny cyklus (simulujici do-while) je mezi label_start a goto label_start. Podminka na ukonceni pak je if se skokem mimo smycku.

    Ano. Presne takhle se ve starych jazycich kodovaly tyhle veci. Dneska uz maji oba zminene konstrukce analogicke obou tymum cyklu a je skoda, ze si jich nevazite.
    2.6.2013 20:17 Maruška
    Rozbalit Rozbalit vše Re: implementace cyklu For pomocí While v C
    Děkuju všem za pomoc, už vím. Dííky :)
    3.6.2013 09:43 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: implementace cyklu For pomocí While v C

    S ohledem na odpovědi mám trochu obavu, co vlastně víte. Takže pro pořádek:

      for (INIT; COND; ITER) {
        BODY;
      }
    

    lze (za předpokladu, že v těle nepoužijete continue) ekvivalentně přepsat jako

      INIT;
      while (COND) {
        BODY;
        ITER;
      }
    

    Pomocí do-while je to horší, protože ten vždy proběhne aspoň jednou. Takže by bylo potřeba použít nějaký špinavý trik typu

      INIT;
      do {
        if (!(COND))
          break;
        BODY;
        ITER;
      while (true);
    

    a samozřejmě ani tady to nebude fungovat správně, pokud v těle použijete continue.

    Podstatná otázka samozřejmě je, k čemu je to dobré.

    David Watzke avatar 3.6.2013 10:35 David Watzke | skóre: 74 | blog: Blog... | Praha
    Rozbalit Rozbalit vše Re: implementace cyklu For pomocí While v C
    Ještě pro úplnost bych dodal, že INIT v případě for cyklu zaniká tam kde for cyklus končí, zatímco u toho while cyklu zaniká až když končí blok, ve kterém je jeho INIT obsažen.
    “Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
    3.6.2013 11:07 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: implementace cyklu For pomocí While v C
    Pravda, na to to, že v inicializaci může být i deklarace, jsem úplně zapomněl; přitom to s oblibou využívám a vadilo mi, že to v C před C99 nešlo…
    3.6.2013 11:44 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
    Rozbalit Rozbalit vše Re: implementace cyklu For pomocí While v C
    Zajímavější dříve bylo, že některé compiler-y, fungovali takto:
    zápis v pořádku:
    for(int i=1;…){
    }
    
    ale fungoval jako:
    int i;
    for(i=1;…){
    }
    
    což měnilo platný scope pro 'i'.
    To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
    5.6.2013 15:36 Sten
    Rozbalit Rozbalit vše Re: implementace cyklu For pomocí While v C
    +1

    Ten druhý přepis by měl být
    {
      INIT;
        while (COND) {
          BODY;
          ITER;
        }
      }
    
    3.6.2013 15:07 lertimir | skóre: 64 | blog: Par_slov
    Rozbalit Rozbalit vše Re: implementace cyklu For pomocí While v C
    Spíše to bude z Basicu. FORTRAN měl pouze a jedině pěticiferné numerické labely. cyklus s DO
    C     EKVIVALENT V FORTRAN 77 DO
          INTEGER I
          INTEGER N
          N=7
          DO 10 I=1,N
    C    DO WORK
    10    CONTINUE
          STOP
          END
    
    totéž pomocí IF
    C     EKVIVALENT V FORTRAN 77 IF
          INTEGER I
          INTEGER N
    10    IF (N=I) 40,30,20
    20    I=I+1
    C    DO WORK
    30    GOTO 50
    40    PRINT 'CHYBA I JE VETSI NEZ N'
    50    STOP
          END
    
    3.6.2013 15:12 lertimir | skóre: 64 | blog: Par_slov
    Rozbalit Rozbalit vše Re: implementace cyklu For pomocí While v C
    Fuj, napsal jsem to špatně, druhá možnost je správně
    C     EKVIVALENT V FORTRAN 77 IF
          INTEGER I
          INTEGER N
    10    IF (N-I) 40,30,20
    20    I=I+1
    C    DO WORK
    30    GOTO 50
    40    PRINT 'CHYBA I JE VETSI NEZ N'
    50    STOP
          END
    
    jak už 20 let píšu do if podmínku, tak ty prsty to napsaly automaticky, přitom tohle FORTRANí IF je na číslo.
    3.6.2013 21:13 fabulator
    Rozbalit Rozbalit vše Re: implementace cyklu For pomocí While v C
    V C neni numericky label, prikaz continue a taktez aritmeticke if. Jinak by tam asi melo byt spis goto na 10.
    5.6.2013 15:03 lertimir | skóre: 64 | blog: Par_slov
    Rozbalit Rozbalit vše Re: implementace cyklu For pomocí While v C
    jo to by mělo.
    5.6.2013 09:46 dword
    Rozbalit Rozbalit vše Re: implementace cyklu For pomocí While v C
    #define LIMIT 100
    
    int i;
    
    //--- FOR LOOP -----------
    for(i = 0; i < LIMIT; i++)
      f(i);
    
    //--- WHILE LOOP -----------
    i = 0;
    while(i < LIMIT)
    {
      f(i);
      i++;
    }
    
    //--- DO-WHILE LOOP -----------
    i = 0;
    if(i < LIMIT)
    {
      do
      {
        f(i);
      } while(++i < LIMIT);
    }
    

    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.