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:44 | Komunita

    Na YouTube byly publikovány videozáznamy přednášek a na Flickru fotografie z konference EuroPython 2026.

    Ladislav Hagara | Komentářů: 0
    včera 18:11 | Nová verze

    Byl vydán Debian 13.7, tj. sedmá opravná verze Debianu 13 s kódovým názvem Trixie. Řešeny jsou především bezpečnostní problémy, ale také několik vážných chyb. Instalační média Debianu 13 lze samozřejmě nadále k instalaci používat. Po instalaci stačí systém aktualizovat.

    Ladislav Hagara | Komentářů: 0
    včera 02:00 | Zajímavý článek

    Jiří Eischmann se v příspěvku Fiasko jménem W Social na svém blogu věnuje evropské sociální síti W: "W Social je příkladem toho, že se problémy sociální sítí nedají řešit od exekutivního stolu. Když na začátku tohoto roku v Davosu oznámili vznik nové sociální sítě W Social, politici se mohli přetrhnout ve chvalozpěvech. Konečně evropská sociální síť a ještě s ověřením identity. … Jak se ukázalo, když v Davosu W Social oznamovali, neměli kromě

    … více »
    Ladislav Hagara | Komentářů: 16
    11.9. 18:00 | Bezpečnostní upozornění

    Výrobce hardwarových kryptoměnových peněženek Trezor upozorňuje na bezpečnostní incident u společnosti Brevo, kterou využívá k odesílání newsletterů. Útočník na e-mailové adresy odeslal phishingový e-mail.

    Ladislav Hagara | Komentářů: 5
    11.9. 14:33 | Komunita

    Clement "Clem" Lefebvre publikoval souhrn dění v Linux Mintu za srpen 2026. Aplikace XApp mají vlastní webovou stránku xapp-project.org. Představena byl čtečka EPUB s názvem Xepub a kalendář Clockenstein.

    Ladislav Hagara | Komentářů: 0
    11.9. 11:44 | Nová verze

    Byla vydána nová verze 3.2.6 svobodné aplikace pro úpravu a vytváření rastrové grafiky GIMP (GNU Image Manipulation Program). Přehled novinek v oznámení o vydání a v souboru NEWS na GitLabu. Nový GIMP je již k dispozici také na Flathubu.

    Ladislav Hagara | Komentářů: 0
    11.9. 11:33 | Nová verze

    Bylo vydáno Ubuntu 24.04.5 LTS, tj. páté opravné vydání Ubuntu 24.04 LTS s kódovým názvem Noble Numbat. Přehled novinek a oprav na poznámkách k vydání.

    Ladislav Hagara | Komentářů: 0
    11.9. 04:33 | Komunita

    Švýcarsko testuje přechod z Microsoft 365 na FOSS, konkrétně balík openDesk (Wikipedie) od německé státní společnosti ZenDiS (Wikipedie), s cílem posílit digitální suverenitu.

    Ladislav Hagara | Komentářů: 9
    11.9. 04:22 | Komunita

    V italském městě Pordenone probíhá LibreOffice Conference 2026. Zúčastnit se lze i online.

    Ladislav Hagara | Komentářů: 0
    10.9. 18:33 | Nová verze

    Svobodný (GPLv3) šachový engine Stockfish (Wikipedie) byl vydán ve verzi 19 (𝕏). Přehled novinek v příspěvku na blogu. Stockfish 19 je o 44 Elo silnější než Stockfish 18.

    Ladislav Hagara | Komentářů: 0
    Které desktopové prostředí na Linuxu používáte?
     (10%)
     (7%)
     (4%)
     (21%)
     (29%)
     (7%)
     (5%)
     (2%)
     (14%)
     (21%)
    Celkem 2653 hlasů
     Komentářů: 31, poslední 13.8. 00:27
    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: 1156×
    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.