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

    Byly zveřejněny informace o kritické zranitelnosti CVE-2026-64600 pojmenované RefluXFS (technické detaily) v XFS. Je tam již od verze Linuxu 4.11, tj. rok 2017. Jedná se o lokální eskalaci práv. Neprivilegovaný uživatel může editovat libovolný soubor, například klidně zrušit rootovské heslo v /etc/passwd. Videoukázka na Vimeo. V upstreamu je zranitelnost opravena.

    Ladislav Hagara | Komentářů: 0
    včera 13:46 | IT novinky

    OpenAI / ChatGPT má dnes výpadky (OpenAI Status, DownDetector).

    Ladislav Hagara | Komentářů: 0
    včera 13:00 | Komunita

    Poskytovatel hostingu svobodných/open-source projektů Codeberg po hlasování na valné hromadě vydal stanovisko k využívání LLM. Kvůli vytěžování infrastruktury a rostoucím cenám hardwaru, ale také hrozbám pro spolupráci v komunitě se k LLM staví kriticky. Nebude poskytovat hosting projektů vytvářených LLM agenty.

    |🇵🇸 | Komentářů: 0
    24.7. 14:22 | Zajímavý projekt

    Jack Dorsey představil (𝕏) open source týmovou komunikační platformu Buzz (GitHub) s cílem snížit závislost na Slacku a GitHubu.

    Ladislav Hagara | Komentářů: 18
    23.7. 23:00 | Nová verze

    Poštovní klient Thunderbird byl vydán v nové verzi 153 s kódovým názvem Meadow. Jedná se o ESR (Extended Support Release) vydání. Přehled novinek v poznámkách k vydání. Vylepšuje OAuth. Thundermail lze používat bez instalace doplňku.

    Ladislav Hagara | Komentářů: 0
    23.7. 22:22 | Zajímavý článek

    AI tento rok naplno vtrhla do vývoje softwaru a výrazně ovlivňuje také open source projekty. Jiří Eischmann v příspěvku Jak mění AI open source na svém blogu rozebírá několik trendů, které v open source v poslední době v souvislosti s AI pozoruje, a jak tyto trendy svět otevřeného softwaru mění (Inflace projektů, Zahlcení kontroly, Klesající motivace zveřejňovat kód).

    Ladislav Hagara | Komentářů: 16
    23.7. 22:00 | IT novinky

    Evropská komise (EK) vyměřila americké internetové společnosti Google pokutu 890 milionů eur (21,5 miliardy Kč) za porušení unijního nařízení o digitálních trzích (DMA). Firma se podle unijní exekutivy provinila tím, že ve vyhledávači Google Search upřednostňovala vlastní služby a že podnikům ukládala omezení, která jim bránila nasměrovat spotřebitele k alternativním, často levnějším nákupním kanálům na platformě Google Play.

    … více »
    Ladislav Hagara | Komentářů: 2
    22.7. 19:44 | IT novinky

    Samsung na akci Galaxy Unpacked July 2026 (YouTube) představil své nové telefony Galaxy Z Fold8 Ultra, Fold8 a Flip8, hodinky Galaxy Watch Ultra2 a Watch9 a chytré brýle ve spolupráci s Gentle Monster a Warby Parker.

    Ladislav Hagara | Komentářů: 0
    22.7. 16:11 | IT novinky

    Po pěti letech vývoje vyšla česká počítačová hra Scarlet Deer Inn (ProtonDB). Scarlet Deer Inn je vyšívaná temná středověká pohádka. Zatímco život ve zdánlivě obyčejné vesnici se točí kolem běžných povinností a sousedských drbů, v podzemí se skrývají zlověstná tajemství.

    Ladislav Hagara | Komentářů: 2
    22.7. 13:33 | IT novinky

    Představen byl Raspberry Pi Touch Display 2 s uhlopříčkou 10 palců a rozlišením 1200 × 1920 pixelů. Cena je 80 dolarů.

    Ladislav Hagara | Komentářů: 11
    Které desktopové prostředí na Linuxu používáte?
     (11%)
     (7%)
     (2%)
     (17%)
     (30%)
     (5%)
     (6%)
     (2%)
     (15%)
     (24%)
    Celkem 2223 hlasů
     Komentářů: 30, poslední 3.4. 20:20
    Rozcestník


    Dotaz: Kalkulačka v jazyku C s jasně zadaným vstupem

    19.11.2013 14:37 anakin
    Kalkulačka v jazyku C s jasně zadaným vstupem
    Přečteno: 2450×
    Ahoj, mohl by mi někdo prosím vylepšit můj kód aby splňoval tato kritéria:

    1)Vstup je jasně daný: a oper b, kde a a b jsou typu double, oper je +,-,* nebo /

    Přičemž program ignoruje mezery mezi jednotlivými vstupy - příklad: 3 + 1 program interpretuje jako 3+1 nehledě na to že uživatel zadal mnoho mezer mezi jednotlivými vstupy

    2) Pokud uživatel zadá nějaký nesmysl - například 4 nebo 3a a zmáčkne ENTER tak se objeví chybová hláška

    Takto vypadá můj současný kód:

    int main()
    {
       char oper;
       double a, b;
    
       printf("Napiste co chcete vypocitat\n");
       scanf("%lf", &a);
       getchar();
       oper = getchar();
       scanf("%lf", &b);
    
       switch(oper)
       {
        case '+':
            printf("%f+%f=%.2f",a,b,a+b);
            break;
        case '-':
            printf("%f-%f=%.2f",a,b,a-b);
            break;
        case '*':
            printf("%f*%f=%.2f",a,b,a*b);
            break;
        case '/':
            if(b != 0)
            {
                        printf("%f/%f=%.2f",a,b,a/b);
                break;
            }
            else
            {
                printf("Error! Delite nulou.");
                break;
            }
        default:
            printf("Error! Spatne zadany operator.");
            break;
       }
       return 0;
    }


    Řešení dotazu:


    Odpovědi

    Josef Kufner avatar 19.11.2013 15:04 Josef Kufner | skóre: 70
    Rozbalit Rozbalit vše Re: Kalkulačka v jazyku C s jasně zadaným vstupem
    char oper[2] = {0, 0};
    double a, b;
    if (3 == scanf("%lf %1[+/*-] %lf", &a, &oper, &b)) {
        printf("%f %c %f = %.2f\n", a, oper[0], b, a + b);
    } else {
        fprintf(stderr, "Nejaka blbost.\n");
    }
    Hello world ! Segmentation fault (core dumped)
    19.11.2013 15:20 potato
    Rozbalit Rozbalit vše Re: Kalkulačka v jazyku C s jasně zadaným vstupem
    Jo, pravda, %[ ukládá ještě na konec NUL, takže moje řešení je blbě...
    19.11.2013 15:17 potato
    Rozbalit Rozbalit vše Re: Kalkulačka v jazyku C s jasně zadaným vstupem
    scanf() je mnohem inteligentnější, než se obecně ví...
        double a, b;
        char op;
    
        if (scanf("%lf %1[-+/*] %lf", &a, &op, &b) != 3)
            printf("Error.\n");
        else {
            /* ... */
        }
    
    19.11.2013 15:39 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
    Rozbalit Rozbalit vše Re: Kalkulačka v jazyku C s jasně zadaným vstupem
    scanf() je mnohem inteligentnější, než se obecně ví...
    Ještě ho naučit, že tečka i čárka u plavacích čísel totéž je (ehm tedy desetinný oddělovač, bez ohledu na locale) a bylo by vystarané...
    To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
    20.11.2013 09:16 dword
    Rozbalit Rozbalit vše Re: Kalkulačka v jazyku C s jasně zadaným vstupem
    jeste ze mame roury a sed
    20.11.2013 10:36 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
    Rozbalit Rozbalit vše Re: Kalkulačka v jazyku C s jasně zadaným vstupem
    To je k ničemu, je to o tom, že prostě nelze jednoduše řádkově žádat vstup uživatele. Je třeba si to sám upravovat, protože lidi mají různé nastavení a různé aplikace, používají různé vstupy a rozlišit kdy kde tečku nebo čárku v krajích česko-německých je na zblbnutí...
    Zjednodušeně musíš vzít řetězec místo čísla, zjistit si co tam má být, udělat harakiry, a přehnat to přes nějakou scanf fci, pak teprve máš user-friendly zadávaní vstupu.
    To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
    19.11.2013 18:12 anakin
    Rozbalit Rozbalit vše Re: Kalkulačka v jazyku C s jasně zadaným vstupem
    JJ. To funguje perfektně. To pole+scanf je geniální řešení pro to ignorování mezer, přesto mi vrtá hlavou proč tam nefunguje to printf(error) v případech pokud zadám vstup tohoto typu např.: 394 a zmáčknu ENTER tak se mi ta hláška ERROR nechce zobrazit, zatímco pokud zadám 3 56 nebo CauLidi tak se hláška ERROR zobrazí. Nevíte v čem je problém?
    19.11.2013 19:00 axel
    Rozbalit Rozbalit vše Re: Kalkulačka v jazyku C s jasně zadaným vstupem
    scanf neni prilis vhodny nastroj pro tento ukol. Lepe receno tak jak je formulovan by snad sel resit (neni tam ale potencialni problem s arithmetic overflow?), ale obecne parsovat stdin pomoci scanf nekonci dobre. Napsal bych si parsing komplet jako jednoduchy automat a jeste bych si pri tom procvicil cecko, coz je asi smyslem tohoto zadani:-)
    19.11.2013 19:56 potato
    Rozbalit Rozbalit vše Re: Kalkulačka v jazyku C s jasně zadaným vstupem
    Jaký problém s arithmetic overflow? Program samozřejmě korektně načítá i výrazy jako 1+inf, nan/nan a podobně.

    Napsát správné parsování a konverzi čísel s plovoucí řádovou čárkou není žádné jednoduché cvičení.
    21.11.2013 10:16 axel
    Rozbalit Rozbalit vše Re: Kalkulačka v jazyku C s jasně zadaným vstupem
    Treba pro integer tento problem nastava (zada se dlouha posloupnost cislic a nacte se nesmysl), s tim jsem se primo setkal. Mozna pro double to je osetrene a nenastava to, s tim zkusenost nemam a patrat se mi po tom nechce:-)
    19.11.2013 19:25 potato
    Rozbalit Rozbalit vše Re: Kalkulačka v jazyku C s jasně zadaným vstupem
    Hm, ano, problém je validní leč neúplný vstup, protože se má něco stát hned po Enteru, ne na konci vstupu. V tom případě je možné třeba číst po řádcích (např. pomocí getline()) a použít sscanf() na ten řádek.
    19.11.2013 19:56 anakin
    Rozbalit Rozbalit vše Re: Kalkulačka v jazyku C s jasně zadaným vstupem
    Zkoušel jsem toto:
    
    int main()
    {
       char oper;
       double a, b;
       char buffer[256];
    
       printf("Napiste co chcete vypocitat\n");
       fgets(buffer, 256, stdin);
       if (sscanf("%lf %1[-+/*] %lf", &a, &oper, &b) != 3)
            printf("ERROR.\n");
       else
            { .... zbytek kódu je stejný....
    
    Problémem ale teď je že pokud zadám normální vstup
    3 + 1
    tak to zmrzne jako předtím.

    Ovšem když zadám
    3458
    tak se doopravdy objeví ERROR

    Mohli byste mi to prosím vysvětlit a opravit?
    Řešení 1× (anakin (tazatel))
    Josef Kufner avatar 19.11.2013 20:00 Josef Kufner | skóre: 70
    Rozbalit Rozbalit vše Re: Kalkulačka v jazyku C s jasně zadaným vstupem
    sscanf(buffer, …
    Hello world ! Segmentation fault (core dumped)
    Josef Kufner avatar 19.11.2013 19:59 Josef Kufner | skóre: 70
    Rozbalit Rozbalit vše Re: Kalkulačka v jazyku C s jasně zadaným vstupem
    Druhou možností je lépe specifikovat mezery:
    scanf("%lf%*[ \t]%1[+/*-]%*[ \t]%lf", &a, &oper, &b)
    Ale jinak se mi taktéž osvědčilo nejdříve načíst řádek a pak teprve ho parsovat. Pokud konec řádku nese význam, je to spolehlivější a lépe to reaguje na chyby ve vstupu.
    Hello world ! Segmentation fault (core dumped)
    Josef Kufner avatar 19.11.2013 20:04 Josef Kufner | skóre: 70
    Rozbalit Rozbalit vše Re: Kalkulačka v jazyku C s jasně zadaným vstupem
    Pokud to však chceš udělat opravdu pěkně, přečti si zdejší seriál Jazyky a překladače. Najdeš tam, jak to udělat tak, aby fungovaly například i závorky a libovolný počet operátorů, včetně jejich priorit.
    Hello world ! Segmentation fault (core dumped)

    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.