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 01:22 | Nová verze

    Byla vydána (𝕏) zářijová aktualizace aneb nová verze 1.105 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.105 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 | Komunita

    Ve Firefoxu bude lepší správa profilů (oddělené nastavení domovské stránky, nastavení lišt, instalace rozšíření, uložení hesla, přidání záložky atd.). Nový grafický správce profilů bude postupně zaváděn od 14.října.

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

    Canonical vydal (email) Ubuntu 25.10 Questing Quokka. Přehled novinek v poznámkách k vydání. Jedná se o průběžné vydání s podporou 9 měsíců, tj. do července 2026.

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

    ClamAV (Wikipedie), tj. multiplatformní antivirový engine s otevřeným zdrojovým kódem pro detekci trojských koní, virů, malwaru a dalších škodlivých hrozeb, byl vydán ve verzi 1.5.0.

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

    Byla vydána nová verze 1.12.0 dynamického programovacího jazyka Julia (Wikipedie) určeného zejména pro vědecké výpočty. Přehled novinek v příspěvku na blogu a v poznámkách k vydání. Aktualizována byla také dokumentace.

    Ladislav Hagara | Komentářů: 0
    8.10. 15:11 | Bezpečnostní upozornění

    V Redisu byla nalezena a v upstreamu již opravena kritická zranitelnost CVE-2025-49844 s CVSS 10.0 (RCE, vzdálené spouštění kódu).

    Ladislav Hagara | Komentářů: 5
    8.10. 14:00 | IT novinky

    Ministr a vicepremiér pro digitalizaci Marian Jurečka dnes oznámil, že přijme rezignaci ředitele Digitální a informační agentury Martina Mesršmída, a to k 23. říjnu 2025. Mesršmíd nabídl svou funkci během minulého víkendu, kdy se DIA potýkala s problémy eDokladů, které některým občanům znepříjemnily využití možnosti prokázat se digitální občankou u volebních komisí při volbách do Poslanecké sněmovny.

    Ladislav Hagara | Komentářů: 18
    8.10. 12:33 | Zajímavý software

    Společnost Meta představila OpenZL. Jedná se o open source framework pro kompresi dat s ohledem na jejich formát. Zdrojové kódy jsou k dispozici na GitHubu.

    Ladislav Hagara | Komentářů: 0
    8.10. 03:33 | IT novinky

    Google postupně zpřístupňuje českým uživatelům Režim AI (AI Mode), tj. nový režim vyhledávání založený na umělé inteligenci. Režim AI nabízí pokročilé uvažování, multimodalitu a možnost prozkoumat jakékoliv téma do hloubky pomocí dodatečných dotazů a užitečných odkazů na weby.

    Ladislav Hagara | Komentářů: 0
    7.10. 18:11 | Nová verze

    Programovací jazyk Python byl vydán v nové major verzi 3.14.0. Podrobný přehled novinek v aktualizované dokumentaci.

    Ladislav Hagara | Komentářů: 2
    Jaké řešení používáte k vývoji / práci?
     (38%)
     (46%)
     (15%)
     (17%)
     (21%)
     (15%)
     (17%)
     (15%)
     (15%)
    Celkem 203 hlasů
     Komentářů: 13, poslední 8.10. 07:41
    Rozcestník

    Dotaz: vypsání intervalu v ostrých závorkách

    13.11.2018 21:24 Kacka99
    vypsání intervalu v ostrých závorkách
    Přečteno: 1108×
    Ahoj mám problém a prosím o radu.

    Potřebuji udělat interval, který bude v ostrých závorkách < >. Používám na vypsání scanf a poté cyklus for, kde nejnižší hodnota je "a" a nejvyšší "b". Pokud však dám program spustit a napíšu ostré závorky a do nich čísla a nechám si celý cyklus (tedy interval) vypsat, program se zacyklí. Prosím, co s tím?

    Odpovědi

    13.11.2018 22:34 rastos | skóre: 63 | blog: rastos
    Rozbalit Rozbalit vše Re: vypsání intervalu v ostrých závorkách
    Používám na vypsání scanf

    To asi ťažko.

    Skús sa spýtať ešte raz.
    13.11.2018 22:49 Kacka99
    Rozbalit Rozbalit vše Re: vypsání intervalu v ostrých závorkách
    ten program vypadá takhle:

    int a,b;

    scanf("%d%d", &a, &b);

    for (int i = a; i <= b; i++)

    printf("%d", i);

    --------------------------------------------------------------------------

    když vkládám čísla, ze kterých chci udělat interval napíšu např. <1;5> a program se zacyklí.
    13.11.2018 22:37 sad
    Rozbalit Rozbalit vše Re: vypsání intervalu v ostrých závorkách
    Zkus tohle:
    #include <stdio.h>
    
    int main()
    {
        int min, max, i;
        char end[2];
        
        if (scanf("<%d,%d%1[>]", &min, &max, end) == 3)
        	for (i = min; i <= max; i++)
        		printf("%d\n", i);	
        
        return 0;
    }
    
    Funkce scanf vrací počet úspěšně načtených proměnných.
    13.11.2018 22:52 Kacka99
    Rozbalit Rozbalit vše Re: vypsání intervalu v ostrých závorkách
    Zkusím to, děkuji moc.
    13.11.2018 23:02 sad
    Rozbalit Rozbalit vše Re: vypsání intervalu v ostrých závorkách
    Akorát ten interval musíš zadat ve formátu <1,5> když budeš chtít formát <1;5>, tak ve scanf jen vyměníš tu čárku za středník.
    13.11.2018 22:55 Kacka99
    Rozbalit Rozbalit vše Re: vypsání intervalu v ostrých závorkách
    Napadlo mě, že bych to mohla udělat takto:

    int a, b;

    printf("<");

    scanf("%d%d", &a, &b);

    printf(">");

    ale to druhé printf se vypíše pod čísly, které vyberu, tedy neexistuje něco, co by nechalo vše na jednom řádku? Něco jako \n?
    14.11.2018 09:43 rastos | skóre: 63 | blog: rastos
    Rozbalit Rozbalit vše Re: vypsání intervalu v ostrých závorkách
    To si treba dobre naštudovať, ako funguje scanf().

    scanf() číta zo štandardného vstupu. Teda: a) nerobí výstup. b) scanf() začne spracovávať až dáta, ktoré mu "dodá terminál". Vnútorne je to trocha komplikované, ale na tej úrovni, na ktorej sa bavíme, to skrátka funguje tak, že scanf() začne niečo robiť až keď užívateľ stlačí Enter. Až vtedy zoberie postupnosť znakov, ktoré užívateľ naťukal a začne ich analyzovať a plniť premenné v tvojom prípade premenné 'a' a 'b'. Podstatné je, že v tom čase už terminál prijal stlačenie klávesy Enter a zareagoval na to tak, že posunul kurzor (miesto, kde sa napíše ďalší znak) na ďalší riadok. Preto sa ten znak > objaví na ďalšom riadku.

    Ďalšia vec: prvým argumentom funkcie scanf() je tzv. "formatovací reťazec". V tvojom prípade "%d%d". Ten rozhoduje o tom, ako sú znaky napísanú užívateľom "pochopené", analyzované a priradené do premenných 'a' a 'b'. V tomto formátovacom reťazci sú časti začínajúce znakom percento. '%d' hovorí, že postupnosť znakov sa bude interpretovať ako číslo zapísané v desiatkovej sústave. To má tiež svoje nuansy. Napr. čítanie čísla sa zastaví na prvom znaku, ktorý nemožno použiť ako číslicu. Napr. ak je na vstupe "123 456", tak čítanie prvého čísla zastaví po znaku '3', lebo znak medzera nie je možné použiť ako číslicu. Druhá vlastnosť: čítanie číslice preskakuje "biele znaky" (kam patrí aj medzera) na začiatku. Takže čítanie druhého čísla začne medzerou, tá sa preskočí a pokračuje sa číslicou 4 a skončí (neviditeľným ) znakom, ktorý tam dala klávesa Enter. Preto ak na vstup dám "123,456" tak prvé číslo sa prečíta, ale druhé nie, pretože znak ',' nepatrí medzi "biele znaky".

    No a nakoniec: formátovací reťazec scanf() môže obsahovať iné znaky, ktoré nemajú pred sebou znak percento a tie musia sedieť s tým, čo je na vstupe. Takže ak budem mať
    scanf("<%d,%d>",&a,&b)
    a na vstup napíšem
    <123,456>
    tak to zafunguje, ale užívateľ musí napísať aj znaky '<', '>' a ','. Ak tam dá napr. bodkočiarku, tak to nezafunguje, lebo bodkočiarka nie je čiarka. Ak tam dá miesto čiarky medzeru, tak to nezafunguje lebo čiarka vo formátovacom reťazci sa nenájde na vstupe. Ak dá medzeru na pred znak < tak to zasa nezafunguje, lebo formátovací reťazec začína znakom < a tam sa žiadne biele znaky nepreskakujú.

    Cvičenie #1: zafunguje?
    <123, 456>
    Cvičenie #2: zafunguje?
    <123 ,456>
    14.11.2018 10:21 Kacka99
    Rozbalit Rozbalit vše Re: vypsání intervalu v ostrých závorkách
    Teda děkuji moc, hned jak budu doma, zkusím to. A fakt moc díky za to vysvětlení všeho. :)
    14.11.2018 14:21 debian+
    Rozbalit Rozbalit vše Re: vypsání intervalu v ostrých závorkách
    Tvoje upravene na univerzalnejsie (upraveny kod uzivatela sad):
    #include <stdio.h>
    
    #define IS_NOT_NUMBER(a) (!((a) >= '0' && (a) <= '9'))
    
    /* vsetky ostatne znaky okrem cisiel riadku "zmaze" (nahradi medzerou) */
    void clean_on_number(char *buffer, size_t lenght)
    {
    	char *p;
    	
    	if(buffer == NULL)
    		return;
    	
    	for(p=buffer;*p != '\0'; p++)
    		if(IS_NOT_NUMBER(*p))
    			*p=' ';
    }
    
    int main(int argc, char **argv)
    {
        int min, max, i;
        
        char buffer[100];
        if(fgets(buffer, 100, stdin) != NULL)
        {
    		clean_on_number(buffer, 100);
    		sscanf(buffer, "%d %d", &min, &max);
        	for (i = min; i <= max; i++)
        		printf("%d\n", i);	
    	}
        
        return 0;
    }
    
    

    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.