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 12:11 | IT novinky

    Rusko zcela zablokovalo komunikační platformu WhatsApp, řekl včera mluvčí Kremlu Dmitrij Peskov. Aplikace, jejímž vlastníkem je americká společnost Meta Platforms a která má v Rusku na 100 milionů uživatelů, podle Peskova nedodržovala ruské zákony. Mluvčí zároveň lidem v Rusku doporučil, aby začali používat domácí aplikaci MAX. Kritici tvrdí, že tato aplikace ruské vládě umožňuje lidi sledovat, což úřady popírají.

    Ladislav Hagara | Komentářů: 6
    dnes 11:44 | IT novinky

    Před 34 lety, ve čtvrtek 13. února 1992, se tehdejší Česká a Slovenská Federativní Republika oficiálně (a slavnostně) připojila k Internetu.

    Ladislav Hagara | Komentářů: 2
    dnes 04:44 | Humor

    Agent umělé inteligence vytvořil 'útočný' článek o Scottu Shambaughovi, dobrovolném správci knihovny matplotlib, poté, co vývojář odmítl agentem navrženou změnu kódu (pull request). 'Uražený' agent autonomně sepsal a publikoval na svém blogu článek, který přisuzuje Shambaughovi smyšlené motivace, egoismus a strach z AI coby konkurence.

    NUKE GAZA! 🎆 | Komentářů: 19
    včera 20:11 | Nová verze

    Bylo vydáno Ubuntu 24.04.4 LTS, tj. čtvrté opravné vydání Ubuntu 24.04 LTS s kódovým názvem Noble Numbat. Přehled novinek a oprav na Discourse.

    Ladislav Hagara | Komentářů: 0
    včera 17:44 | Pozvánky

    V pátek 20. února 2026 se v pražské kanceláři SUSE v Karlíně uskuteční 6. Mobile Linux Hackday, komunitní setkání zaměřené na Linux na mobilních zařízeních, kernelový vývoj a uživatelský prostor. Akce proběhne od 10:00 do večera. Hackday je určen všem, kteří si chtějí prakticky vyzkoušet práci s linuxovým jádrem i uživatelským prostorem, od posílání patchů například pomocí nástroje b4, přes balíčkování a Flatpak až po drobné úpravy

    … více »
    lkocman | Komentářů: 5
    včera 13:33 | IT novinky

    Evropská rada vydavatelů (EPC) předložila Evropské komisi stížnost na americkou internetovou společnost Google kvůli její službě AI Overviews (AI souhrny), která při vyhledávání na internetu zobrazuje shrnutí informací ze zpravodajských serverů vytvořená pomocí umělé inteligence (AI). Evropská komise již v prosinci oznámila, že v souvislosti s touto službou začala firmu Google vyšetřovat. Google obvinění ze strany vydavatelů

    … více »
    Ladislav Hagara | Komentářů: 12
    včera 04:44 | Komunita

    Ubuntu 26.04 (Resolute Raccoon) už nebude v desktopové instalaci obsahovat GUI nástroj 'Software & Updates'. Důvodem jsou obavy z jeho složitosti pro běžné uživatele a z toho plynoucích bezpečnostních rizik. Nástroj lze doinstalovat ručně (sudo apt install software-properties-gtk).

    NUKE GAZA! 🎆 | Komentářů: 25
    včera 04:33 | IT novinky

    Thomas Dohmke, bývalý CEO GitHubu, představil startup Entire - platformu pro spolupráci vývojářů a agentů umělé inteligence. Entire získalo rekordních 60 milionů dolarů na vývoj databáze a nástrojů, které mají zefektivnit spolupráci mezi lidmi a agenty umělé inteligence. Dohmke zdůrazňuje potřebu přepracovat tradiční vývojové postupy tak, aby odpovídaly realitě, kdy většinu kódu produkuje umělá inteligence.

    NUKE GAZA! 🎆 | Komentářů: 0
    včera 04:22 | Zajímavý projekt

    Toyota Connected North America oznámila vývoj open-source herního enginu Fluorite, postaveného na frameworku Flutter. Pro renderování grafiky využívá 3D engine Filament od společnosti Google a dle svého tvrzení cílí na konzolovou kvalitu her. Fluorite je zřejmě navržen tak, aby fungoval i na méně výkonném hardware, což naznačuje možnost použití přímo v ICE systémech vozidel. Zdrojový kód zatím zveřejněný není.

    NUKE GAZA! 🎆 | Komentářů: 3
    včera 04:11 | Bezpečnostní upozornění

    Byl vytvořen nástroj a postup pro překonání věkového ověření platforem Discord, Kick, Twitch, Snapchat (a možná dalších), kód je open-source a dostupný na GitHubu. Všechny tyto sítě používají stejnou službu k-ID, která určuje věk uživatele scanem obličeje a na původní server posílá pouze šifrovaná metadata, ty ale sociální síť už nedokáže sama nijak validovat, 'útok' spočívá ve vygenerování a podstrčení legitimně vypadajících ověřovacích metadat.

    NUKE GAZA! 🎆 | Komentářů: 13
    Které desktopové prostředí na Linuxu používáte?
     (19%)
     (6%)
     (0%)
     (11%)
     (27%)
     (3%)
     (4%)
     (2%)
     (12%)
     (27%)
    Celkem 859 hlasů
     Komentářů: 25, poslední 3.2. 19:50
    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: 2384×
    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.