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

    Greg Kroah-Hartman začal používat AI asistenta pojmenovaného gkh_clanker_t1000. V commitech se objevuje "Assisted-by: gkh_clanker_t1000". Na social.kernel.org publikoval jeho fotografii. Jedná se o Framework Desktop s AMD Ryzen AI Max a lokální LLM.

    Ladislav Hagara | Komentářů: 0
    dnes 04:44 | Komunita

    Ubuntu 26.10 bude Stonking Stingray (úžasný rejnok).

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

    Webový prohlížeč Dillo (Wikipedie) byl vydán ve verzi 3.3.0. S experimentální podporou FLTK 1.4. S příkazem dilloc pro ovládání prohlížeče z příkazové řádky. Vývoj prohlížeče se přesunul z GitHubu na vlastní doménu dillo-browser.org (Git).

    Ladislav Hagara | Komentářů: 1
    včera 21:55 | Komunita

    Byl publikován přehled dění a novinek z vývoje Asahi Linuxu, tj. Linuxu pro Apple Silicon. Vývojáři v přehledu vypíchli vylepšenou instalaci, podporu senzoru okolního světla, úsporu energie, opravy Bluetooth nebo zlepšení audia. Vývoj lze podpořit na Open Collective a GitHub Sponsors.

    Ladislav Hagara | Komentářů: 2
    25.4. 04:00 | Nová verze

    raylib (Wikipedie), tj. multiplatformní open-source knihovna pro vývoj grafických aplikací a her, byla vydána ve verzi 6.0.

    Ladislav Hagara | Komentářů: 1
    24.4. 18:33 | IT novinky

    Nové verze AI modelů. Společnost OpenAI představila GPT‑5.5. Společnost DeepSeek představila DeepSeek V4.

    Ladislav Hagara | Komentářů: 1
    24.4. 15:33 | Zajímavý článek

    Nová čísla časopisů od nakladatelství Raspberry Pi zdarma ke čtení: Raspberry Pi Official Magazine 164 (pdf) a Hello World 29 (pdf).

    Ladislav Hagara | Komentářů: 0
    24.4. 04:44 | Komunita

    Bylo oznámeno, že webový prohlížeč Opera GX zaměřený na hráče počítačových her je už také na Flathubu and Snapcraftu.

    Ladislav Hagara | Komentářů: 0
    23.4. 23:11 | IT novinky

    Akcionáři americké mediální společnosti Warner Bros. Discovery dnes schválili převzetí firmy konkurentem Paramount Skydance za zhruba 110 miliard dolarů (téměř 2,3 bilionu Kč). Firmy se na spojení dohodly v únoru. O část společnosti Warner Bros. Discovery dříve usilovala rovněž streamovací platforma Netflix, se svou nabídkou však neuspěla. Transakci ještě budou schvalovat regulační orgány, a to nejen ve Spojených státech, ale také

    … více »
    Ladislav Hagara | Komentářů: 0
    23.4. 22:33 | Nová verze

    Canonical vydal (email, blog, YouTube) Ubuntu 26.04 LTS Resolute Raccoon. Přehled novinek v poznámkách k vydání. Vydány byly také oficiální deriváty Edubuntu, Kubuntu, Lubuntu, Ubuntu Budgie, Ubuntu Cinnamon, Ubuntu Kylin, Ubuntu Studio, Ubuntu Unity a Xubuntu. Jedná se o 11. vydání s dlouhodobou podporou (LTS).

    Ladislav Hagara | Komentářů: 2
    Které desktopové prostředí na Linuxu používáte?
     (14%)
     (8%)
     (2%)
     (13%)
     (31%)
     (3%)
     (6%)
     (2%)
     (15%)
     (25%)
    Celkem 1432 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: 806×
    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.