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 05:33 | Bezpečnostní upozornění

    Byly publikovány informace o další zranitelnosti v procesorech. Nejnovější zranitelnost byla pojmenována VMScape (CVE-2025-40300, GitHub) a v upstream Linuxech je již opravena. Jedná se o variantu Spectre. KVM host může číst data z uživatelského prostoru hypervizoru, např. QEMU.

    Ladislav Hagara | Komentářů: 1
    včera 22:00 | Komunita

    V červenci loňského roku organizace Apache Software Foundation (ASF) oznámila, že se částečně přestane dopouštět kulturní apropriace a změní své logo. Dnes bylo nové logo představeno. "Indiánské pírko" bylo nahrazeno dubovým listem a text Apache Software Foundation zkratkou ASF. Slovo Apache se bude "zatím" dál používat. Oficiální název organizace zůstává Apache Software Foundation, stejně jako názvy projektů, například Apache HTTP Server.

    Ladislav Hagara | Komentářů: 4
    včera 17:33 | Nová verze

    Byla vydána (𝕏) srpnová aktualizace aneb nová verze 1.104 editoru zdrojových kódů Visual Studio Code (Wikipedie). Přehled novinek i s náhledy a videi v poznámkách k vydání. Ve verzi 1.104 vyjde také VSCodium, tj. komunitní sestavení Visual Studia Code bez telemetrie a licenčních podmínek Microsoftu.

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

    Spotify spustilo přehrávání v bezztrátové kvalitě. V předplatném Spotify Premium.

    Ladislav Hagara | Komentářů: 0
    včera 15:00 | IT novinky

    Spoluzakladatel a předseda správní rady americké softwarové společnosti Oracle Larry Ellison vystřídal spoluzakladatele automobilky Tesla a dalších firem Elona Muska na postu nejbohatšího člověka světa. Hodnota Ellisonova majetku díky dnešnímu prudkému posílení ceny akcií Oraclu odpoledne vykazovala nárůst o více než 100 miliard dolarů a dosáhla 393 miliard USD (zhruba 8,2 bilionu Kč). Hodnota Muskova majetku činila zhruba 385 miliard dolarů.

    Ladislav Hagara | Komentářů: 1
    10.9. 21:22 | Nová verze

    Bylo vydáno Eclipse IDE 2025-09 aneb Eclipse 4.37. Představení novinek tohoto integrovaného vývojového prostředí také na YouTube.

    Ladislav Hagara | Komentářů: 0
    10.9. 18:22 | IT novinky

    T-Mobile od 15. září zpřístupňuje RCS (Rich Communication Services) zprávy i pro iPhone.

    Ladislav Hagara | Komentářů: 3
    10.9. 13:22 | IT novinky

    Společnost ARM představila platformu Arm Lumex s Arm C1 CPU Cluster a Arm Mali G1-Ultra GPU pro vlajkové chytré telefony a počítače nové generace.

    Ladislav Hagara | Komentářů: 0
    10.9. 05:44 | Nová verze

    Unicode Consortium, nezisková organizace koordinující rozvoj standardu Unicode, oznámila vydání Unicode 17.0. Přidáno bylo 4 803 nových znaků. Celkově jich je 159 801. Přibylo 7 nových Emoji.

    Ladislav Hagara | Komentářů: 0
    9.9. 21:00 | IT novinky Ladislav Hagara | Komentářů: 17
    Pro otevření více webových stránek ve webovém prohlížečí používám
     (83%)
     (7%)
     (2%)
     (2%)
     (4%)
     (2%)
    Celkem 164 hlasů
     Komentářů: 12, poslední 10.9. 13:00
    Rozcestník

    Dotaz: Ukoly v C [easy]

    Bundas avatar 2.1.2014 14:04 Bundas | skóre: 14 | Pardubice
    Ukoly v C [easy]
    Přečteno: 426×
    Ahojte vsichni. Ucim se C z jedne knihy. Ted tam mam na konci kapitoly ukoly. Vsechny sem vyresil az na posledni dva. Premyslel sem nad tim, ale opravdu nevim.

    Prvni ukol:

    Napiste program, ktery vypise hodnotu EOF

    Druhy ukol:

    Napiste program pro kopirovani vstupu na vystup, nahrazujici retezce jedne nebo nekolika mezer jednou mezerou

    Vim jak okopirovat vstup na vystup, ale nevim jak nahradit ty retezce.
    int main(void){
    
     int z;
    
     while((z = getchar()) != EOF){
     putchar(z);
     }
     return 0;
    
    }
    diky za pomoc
    Abe the Messiah has come.

    Odpovědi

    Jendа avatar 2.1.2014 14:27 Jendа | skóre: 78 | blog: Jenda | JO70FB
    Rozbalit Rozbalit vše Re: Ukoly v C [easy]
    bool space=0;
    if (z == ' ') {
      if(!space) {
        putchar(z);
      }
      space=1;
    } else {
      putchar(z);
      space=0;
    }
    
    Netestováno a neumím programovat.
    2.1.2014 14:45 DK
    Rozbalit Rozbalit vše Re: Ukoly v C [easy]
    nahradit bool za int a je to ok
    Bundas avatar 2.1.2014 14:51 Bundas | skóre: 14 | Pardubice
    Rozbalit Rozbalit vše Re: Ukoly v C [easy]
    no, nejak mi tam chybi prikaz pro vstup.
    Abe the Messiah has come.
    Jendа avatar 2.1.2014 15:09 Jendа | skóre: 78 | blog: Jenda | JO70FB
    Rozbalit Rozbalit vše Re: Ukoly v C [easy]
    To musíš dát do toho cyklu, co už máš…
    rADOn avatar 2.1.2014 15:39 rADOn | skóre: 44 | blog: bloK | Praha
    Rozbalit Rozbalit vše Re: Ukoly v C [easy]
    …Netestováno a neumím programovat.
    Je to znát :-) Kdyz si misto priznaku (byla/nebyla mezera) budes drzet cely predchozi znak, tak se ti to podstatne zjednodussi.
    "2^24 comments ought to be enough for anyone" -- CmdrTaco
    2.1.2014 14:50 axel
    Rozbalit Rozbalit vše Re: Ukoly v C [easy]
    Napiste program, ktery vypise hodnotu EOF

    k tomu neni moc co poradit, predstav si temer identickou ulohu

    Napiste program, ktery vypise hodnotu 123

    a bude to jasne
    Bundas avatar 2.1.2014 14:52 Bundas | skóre: 14 | Pardubice
    Rozbalit Rozbalit vše Re: Ukoly v C [easy]
    Takze to bude
    printf("%EOF");
    ?
    Abe the Messiah has come.
    Jendа avatar 2.1.2014 15:11 Jendа | skóre: 78 | blog: Jenda | JO70FB
    Rozbalit Rozbalit vše Re: Ukoly v C [easy]
    Ne (man printf)

    putchar(hodnota EOF, kterou jsi zjistil v ASCII tabulce);
    rADOn avatar 2.1.2014 15:30 rADOn | skóre: 44 | blog: bloK | Praha
    Rozbalit Rozbalit vše Re: Ukoly v C [easy]
    Ceckovy EOF neni znak v ascii tabuli, je to konstanta definovana v libc.

    Napoveda: getchar() vraci int a ne char.

    Napoveda pro pomalejsi: kdyby EOF byl platny znak, tak ceckove programy (vcetne rady dalsich programovacich jazyku ktere jsou v C napsany) mely celkem velky problem precist soubor ve kterem se takovy znak vyskytuje.
    "2^24 comments ought to be enough for anyone" -- CmdrTaco
    2.1.2014 16:00 MadCatX
    Rozbalit Rozbalit vše Re: Ukoly v C [easy]
    Jak pozoruji, máš problém pochopit rozdíl mezi znakem a hodnotou, která ten znak kóduje. Znak je celkem logicky to, co se vykreslí na obrazovku, hodnota znaku (jakkoliv to zní kostrbatě) je číslo, které ten znak reprezentuje. Text je v počítači reprezentován jako posloupnost bytů v paměti. Když třeba v C zavoláš
    char* str = "Ahoj!";
    printf("%s", str);
    
    bude se (zjednodušeně) dít toto: Funkce printf() bude číst řetězec "str" byte po bytu a podle použité převodní tabulky převádět ta čísla na znaky. Kdyby se použilo ISO-8895-1, provedl by následující kód toto:
    #include <stdio.h>
    #include <string.h>
    
    int main()
    {
        int i;
        char str[] = "Lama Glama!";
    
        for (i = 0; i <= strlen(str); i++) {
            int val = str[i];
            printf("%d => '%c'\n", val, str[i]);
        }
    
        return 0;
    }        
    
                   
    76 => 'L'
    97 => 'a'
    109 => 'm'
    97 => 'a'
    32 => ' '
    71 => 'G'
    108 => 'l'
    97 => 'a'
    109 => 'm'
    97 => 'a'
    33 => '!'
    0 => ''
    
    Používat putchar() na zjištění hodnoty znaku je tedy blbost, putchar() dělá pravý opak. Správný postup je tedy použít getchar() a vypisovat, co dostane. Hodnota EOF by měla být -1, na *NIXech se EOF z klávesnice dá vložit pomocí CTRL+D.
    martin-ux avatar 2.1.2014 20:38 martin-ux | skóre: 18 | Bratislava
    Rozbalit Rozbalit vše Re: Ukoly v C [easy]
    EOF je zadefinovane macro, e.g. (BSD):
    $ grep EOF /usr/include/stdio.h
    #define	EOF	(-1)
    
    takze vypisat to vies napr.
    #include <stdio.h>
    
    int main() {
    
    #ifdef EOF
       printf ("yop, EOF is defined: %d\n", EOF);
    #else
       printf ("sorry, we don't have EOF defined\n");
    #endif
    
    	return 0;
    }
    
    no, a co sa tyka tej druhej ulohy, trosku sa potrap :). ako hint - ulozeny retazec budes prechadzat po znakoch a budes kontrolovat, ci dany znak je medzera.

    ..when you do things right, people won't be sure you've done anything at all..

    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.