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 17:00 | IT novinky

    Podvodné reklamy na sociálních internetových platformách, jako je Facebook, Instagram nebo X, vytvořily loni v Česku jejich provozovatelům příjmy 139 milionů eur, tedy zhruba 3,4 miliardy korun. Proti roku 2022 je to nárůst o 51 procent. Vyplývá to z analýzy Juniper Research pro společnost Revolut. Podle výzkumu je v Česku zhruba jedna ze sedmi zobrazených reklam podvodná. Je to o 14,5 procenta více, než je evropský průměr, kde je podvodná každá desátá reklama.

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

    Desktopové prostředí KDE Plasma bylo vydáno ve verzi 6.6 (Mastodon). Přehled novinek i s videi a se snímky obrazovek v oficiálním oznámení. Podrobný přehled v seznamu změn.

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

    Czkawka a Krokiet, grafické aplikace pro hledání duplicitních a zbytečných souborů, byly vydány ve verzi 11.0. Podrobný přehled novinek v příspěvku na Medium. Od verze 7.0 je vedle frontendu Czkawka postaveného nad frameworkem GTK 4 vyvíjen nový frontend Krokiet postavený nad frameworkem Slint. Frontend Czkawka je už pouze v udržovacím módu. Novinky jsou implementovány ve frontendu Krokiet.

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

    Jiří Eischmann na svém blogu publikoval článek Úvod do MeshCore: "Doteď mě radioamatérské vysílání úplně míjelo. Když jsem se ale dozvěděl, že existují komunity, které svépomocí budují bezdrátové sítě, které jsou nezávislé na Internetu a do značné míry taky elektrické síti a přes které můžete komunikovat s lidmi i na druhé straně republiky, zaujalo mě to. Když o tom přede mnou pořád básnili kolegové v práci, rozhodl jsem se, že to zkusím taky.

    … více »
    Ladislav Hagara | Komentářů: 3
    16.2. 22:55 | Nová verze

    Byla vydána verze 0.5.20 open source správce počítačových her na Linuxu Lutris (Wikipedie). Přehled novinek v oznámení na GitHubu. Instalovat lze také z Flathubu.

    Ladislav Hagara | Komentářů: 0
    16.2. 12:44 | IT novinky

    Peter Steinberger, autor open source AI asistenta OpenClaw, nastupuje do OpenAI. OpenClaw bude převeden pod nadaci a zůstane otevřený a nezávislý.

    Ladislav Hagara | Komentářů: 0
    16.2. 03:11 | Zajímavý článek

    Společnost Backblaze zveřejnila statistiky spolehlivosti pevných disků používaných ve svých datových centrech za rok 2025. Ke konci roku 2025 vlastnila 349 462 pevných disků. Průměrná AFR (Annualized Failure Rate), tj. pravděpodobnost, že disk během roku selže, byla 1,36 %. V roce 2024 to bylo 1,57 %. V roce 2023 to bylo 1,70 %. V roce 2022 to bylo 1,37 %.

    Ladislav Hagara | Komentářů: 13
    15.2. 21:55 | Zajímavý software

    Nástroj sql-tap je proxy mezi aplikací a databází, které zachytává všechny SQL dotazy a zobrazuje je v terminálovém rozhraní. Zde lze téměř v reálném čase zkoumat dotazy, sledovat transakce a spouštět SQL příkaz EXPLAIN. Podporované databázové systémy jsou pouze PostgreSQL a MySQL. Zdrojový kód je dostupný na GitHubu, pod licencí MIT.

    NUKE GAZA! 🎆 | Komentářů: 0
    15.2. 13:55 | Nová verze

    Byla vydána nová verze 9.2 textového editoru Vim (Vi IMproved). Přináší vylepšené doplňování, podporu schránky ve Waylandu, podporu XDG Base Directory (konfigurace v $HOME/.config/vim), vylepšené Vim9 skriptování nebo lepší zvýrazňování změn. Vim zůstává charityware. Nadále vybízí k podpoře dětí v Ugandě. Z důvodu úmrtí autora Vimu Brama Moolenaara a ukončení činnosti jím založené charitativní organizace ICCF Holland projekt Vim navázal spolupráci s charitativní organizaci Kuwasha.

    Ladislav Hagara | Komentářů: 4
    14.2. 12:33 | Zajímavý projekt

    Byl představen editor MonoSketch, webová aplikace pro tvorbu diagramů, technických nákresů, flowchartů a různých dalších vizualizací, to vše jenom z ASCII znaků. Všechny operace běží pouze v prohlížeči uživatele a neprobíhá tedy žádné nahrávání dat na server. Zdrojový kód aplikace (drtivá většina Kotlin, žádné C#) je dostupný na GitHubu pod licencí Apache 2.0.

    NUKE GAZA! 🎆 | Komentářů: 5
    Které desktopové prostředí na Linuxu používáte?
     (19%)
     (6%)
     (0%)
     (11%)
     (27%)
     (3%)
     (4%)
     (2%)
     (12%)
     (27%)
    Celkem 891 hlasů
     Komentářů: 25, poslední 3.2. 19:50
    Rozcestník

    Dotaz: Jazyk C JEDNOSMĚRNĚ VÁZANÝ SEZNAM

    17.12.2020 19:53 Kajajaa
    Jazyk C JEDNOSMĚRNĚ VÁZANÝ SEZNAM
    Přečteno: 840×
    Příloha:

    Zdravím, mohl by mi s tím proísm vás někdo pomoc, vbc se nechytám a nevím jak pokračovat. Děkuji za pomoc! Jedná se o jazyk C. Přikládám soubor


    Řešení dotazu:


    Odpovědi

    Řešení 1× (Вherzet)
    17.12.2020 21:06 z_sk | skóre: 34 | blog: analyzy
    Rozbalit Rozbalit vše Re: Jazyk C JEDNOSMĚRNĚ VÁZANÝ SEZNAM
    Pouzi pri programovani ceruzku a papier. Najprv to rob na papieri, ako sa robi s objektami zoznam a co obsahuje 1 prvok zoznamu, a az potom programuj.

    Ak rozumies "Vrati pocet polozek seznamu.", tak potom ostatne by nemali byt problem.

    list_empty() kedy vracia false? :D

    list_ctor() je zle. A ma nieco vraciat a nevracia nic.

    item_ctor() - premmena i radsej pouzi cely nazov a ne skratku. Premmena 'a', 'b', 'i' a 'j' sa zvyknu pouzivat na indexy pre polia (i ako index).

    list_delete_first() je zle.

    list_count() spravne. Ak to vies, tak vies odstranovat data, list_find_minid() a list_find_name(). Ved pracujes s prvkami zoznami (a pripadne Objektami v prvok zoznamu).

    pridanie dat na zaciatok - ekvivalent v realnom zivote, co musim urobit ak chcem pridat novy knizku v kniznici?
    debian.plus@protonmail.com
    NUKE GAZA! 🎆 avatar 18.12.2020 03:10 NUKE GAZA! 🎆 | skóre: 37 | blog: Grétin blogísek | 🇮🇱==❤️ , 🇵🇸==💩 , 🇪🇺==☭
    Rozbalit Rozbalit vše Re: Jazyk C JEDNOSMĚRNĚ VÁZANÝ SEZNAM

    bez papíru/čmárání bokem to fakt jako někdy u víc složitějších věcí nejde ale todleto imho neni ten případ kdyby papír jako něco víc řešil :O ;D

    pridanie dat na zaciatok - ekvivalent v realnom zivote, co musim urobit ak chcem pridat novy knizku v kniznici?

    jít do knichkupetví koupit knížku najít nejvíc nejvolnější místo v nějakým tom regálku knihovny a tu knížku tam jakoby strašně silou narvat ajeto :D ;D

    takle si to ale asi jako nemyslel že :D ;D

    NUKE GAZA! 🎆 avatar 18.12.2020 03:01 NUKE GAZA! 🎆 | skóre: 37 | blog: Grétin blogísek | 🇮🇱==❤️ , 🇵🇸==💩 , 🇪🇺==☭
    Rozbalit Rozbalit vše Re: Jazyk C JEDNOSMĚRNĚ VÁZANÝ SEZNAM

    nesmíš namě ale říct že eště nespim :O :O :D ;D

    kuli tomu kolik je hodin si to jako určitě musíš pořádně zkontrolovat protože sotva udržim voči votevřený teďko už :O :O :D ;D pustit to ale de a asi to i jako funguje si myslim :D

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <stdbool.h>
    
    // fakt jako maj bejt ty data voddělený vod těch položek??????? :O :O
    typedef struct
    {
        int id;
        char * name;
    }
    Object;
    
    typedef struct PolozkaSeznamu PolozkaSeznamu;
    struct PolozkaSeznamu
    {
        Object data;
        struct PolozkaSeznamu * next;
    };
    
    typedef struct 
    {
        PolozkaSeznamu * first;
        // k čemu jako potřebujem v dopředným seznamu pološku last když
        // ji jakoby žádná z těch funkcí nepoužívá nanic?? :O :O
        //PolozkaSeznamu * last;
    }
    Seznam;
    
    /**
     * Inicializace seznamu. Vytvori prazdny seznam.
     */
    Seznam * list_ctor()
    {
        Seznam * sznm = malloc(sizeof(Seznam));
        sznm->first = NULL;
        return sznm;
    }
    
    PolozkaSeznamu * novaPolozka(Object data)
    {
        PolozkaSeznamu * p = malloc(sizeof(PolozkaSeznamu));
        p->data = data;
        p->next = NULL;
        return p;
    }
    
    /**
     * Vlozi polozku na zacatek seznamu.
     */
    void list_insert_first(Seznam * sznm, PolozkaSeznamu * polozka)
    {
        //nejdřiv si zapamatujem první položku v seznamu protože ji jakoby přepišem novou první
        //ale tu starou potřebujem aby jsme ji napojili zatu první 
        PolozkaSeznamu * puvodniPrvni = sznm->first;
        
        // přepišem první položku novou skovanou v proměný 'polozka'
        sznm->first = polozka;
        
        // celou tu nudli položek/uzlů celýho seznamu/grafu teďko musíme zase připojit
        // známe uzlík kterým ta šňurka má pokračovat ==> toje ta původní první položka seznamu
        // nóó tak ji napojíme jako příští uzel naši nový první položky :O ;D
        polozka->next = puvodniPrvni;
        // nebo taky mužem přidat ukazatelem v tom poli takle Ňejak
        // sznm->first->next = puvodniPrvni
        // pracujem se stejnou věcí furt
    }
    
    /**
     * Vrati true, pokud je seznam prazdny.
     */
    bool isEmpty(Seznam * sznm)
    {
        // budem předpokládat že ten seznam je prázdnej když nemá žádnou první položku
        // noa první položku nemá když ukazatel 'first' kouká nikam jakože teda na NULL
        
        if(sznm->first == NULL)
            return true;
        else
            return false;
        
        //celý todleto mužem frajersky přepsat jako
        //return sznm->first;
    }
    
    /**
     * Odstrani prvni prvek seznamu, pokud je.
     */
    void list_delete_first(Seznam * sznm)
    {
        //kdybysme rovnou jentak dali dopryč první položku tak by se nám seznam rozbil :O :O
        // musíme si skovat druhou položku seznamu atu pak strčit misto ty první
        // kterou jakoby chcem vodstranit
        
        PolozkaSeznamu * prvni = sznm->first;
        PolozkaSeznamu * druha = prvni->next;
        
        //uvolníme paměť první položky
        // skoro uplně ždycky když někde děláme 'malloc' tak taky jakoby pak musíme někde dělat 'free'
        free(prvni);
        
        //jako novou první položku seznamu nastavíme druhou
        sznm->first = druha;
    }
    
    /**
     * Vrati pocet polozek seznamu.
     */
    unsigned int list_count(Seznam * sznm)
    {
        //spočítáme kolik máme položek v seznamu
        // uděláme si nějakou počítací proměnou která bude začínat na nule
        // a pudem seznamem vod první po poslední položku a za kažnou naštívenou položku
        // počítací proměnou inkrementujeme/zvíšíme o jedničku
        // nóó a to se jakoby po nás v týdletý funkci chce :D ;D
        
        //začínáme první položkou celýho seznamu
        // kdyby náááhodou byl seznam nazačátku prázdnej tak nám stejně tendleten argolytmus udělá že vrátí 0
        PolozkaSeznamu * pristiPolozka = sznm->first;
        
        // naše počítací proměná
        unsigned int kolik = 0;
        
        // todleto si měl dobře :D
        // děláme dokuď proměná 'příštíPoložka' neni null/jeji adresa je věčí od nuly takže jakoby 'true'
        while(pristiPolozka)
        {
            // zvednem počítací proměnou o 1 a jako příští položku nastavíme nóóóóóóó
            // příští položku příští položky :D :D :D ;D
            kolik++;
            pristiPolozka = pristiPolozka->next;
        }
        
        //vrátíme kolik sme napočítali
        return kolik;
        
    }
    
    /**
     * Najde polozku seznamu s nejmensim identifikatorem. Vraci NULL, pokud je
     * seznam prazdny.
     */
    PolozkaSeznamu *list_find_minid(Seznam * sznm)
    {
        //podobně jako v předchozí funkci budem procházet seznam položku popoložce
        // akorátže budem mit navíc jednu proměnou typu 'PoložkaSeznamu' noa do ní si budeme skovávat položku s nejvíc nejmenším id vobsaženýho oběktu ;D
        
        PolozkaSeznamu * pristiPolozka = sznm->first;
        
        //sem si budeme strkat tu položku s nejvíc nejmenším id oběktu
        // zatim si tam dáme tu uplně první naštívenou
        PolozkaSeznamu * nalezenaPolozka = sznm->first;
        
        while(pristiPolozka)
        {
            //pokuď id právě našívený položky je menčí než id zatim nalezený položky
            // tak si ji uložíme misto tý nalezený
            if(pristiPolozka->data.id < nalezenaPolozka->data.id)
                nalezenaPolozka = pristiPolozka;
            
            pristiPolozka = pristiPolozka->next;
        }
        
        //nakonec vrátíme ukazatel natu nalezenou položku seznamu
        return nalezenaPolozka;
        
    }
    
    /**
     * Najde polozku seznamu s odpovidajicim jmenem objektu. Vraci NULL, pokud
     * takova polozka v seznamu neni.
     */
    PolozkaSeznamu *list_find_name(Seznam * sznm, char *name)
    {
        // jeto zase uplně stejný jako předtim akorátže nebudem hledat nejmenčí id
        // ale první výskyt položky který data.name bude stejný
        
        PolozkaSeznamu * pristiPolozka = sznm->first;
        
        while(pristiPolozka)
        {
            // použijem funkci strcmp z knihovny string.h na dělání porovnání stringů
            // (vrací 0 když sou voba stringy stejný) noa když se ména schodujou tak
            // položku vrátíme
            if( strcmp(name, pristiPolozka->data.name) == 0)
                return pristiPolozka;
            
            pristiPolozka = pristiPolozka->next;
        }
        
        // pokuď sme došli až sem nóó tak asi jako hledaná položka v seznamu neni 
        // a podle zadání musíme vrátit null
        return NULL;
    }
    
    /**
     * Uvolneni seznamu.
     */
    void list_dtor(Seznam * sznm)
    {
        //projdem seznam a uděláme že vodstraníme všechny ty položky vobsažený
        // furt jeto všecko stejný
        
        PolozkaSeznamu * pristiPolozka = sznm->first;
        while(pristiPolozka)
        {
            //skováme si adresu současný oložky než ji přepišem příští
            PolozkaSeznamu * soucasna = pristiPolozka;
            pristiPolozka = pristiPolozka->next;
            //a tu současnou teďko uvolníme z paměti
            free(soucasna);
        }
        
        sznm->first = NULL;
        
    }
    
    int main()
    {
        printf("list_ctor...\n");
        Seznam * sznm = list_ctor();
    
        printf("list_empty...\n");
        printf("Seznam prazdny: %s\n", isEmpty(sznm) ? "ano" : "ne");
    
        PolozkaSeznamu *item;
    
        Object o1 = {42, "Honza"};
        printf("item_ctor...\n");
        item = novaPolozka(o1);
        printf("list_insert_first...\n");
        list_insert_first(sznm, item);
    
        printf("Seznam prazdny: %s\n", isEmpty(sznm) ? "ano" : "ne");
        printf("list_count...\n");
        printf("Pocet prvku v seznamu: %d\n", list_count(sznm));
    
        Object o2 = {2, "Malem"};
        item = novaPolozka(o2);
        printf("list_insert_first...\n");
        list_insert_first(sznm, item);
    
        Object o3 = {0, "Kralem"};
        item = novaPolozka(o3);
        printf("list_insert_first...\n");
        list_insert_first(sznm, item);
    
        printf("Pocet prvku v seznamu: %d\n", list_count(sznm));
    
        printf("Odstraneni prvniho prvku ze seznamu \n");
        list_delete_first(sznm);
        printf("Pocet prvku v seznamu: %d\n", list_count(sznm));
    
    
        // opetovne vlozeni objektu o1
        item = novaPolozka(o1);
        printf("list_insert_first...\n");
        list_insert_first(sznm, item);
    
        printf("list_find_minid...\n");
        item = list_find_minid(sznm);
        if (item != NULL) {
            printf("Polozka s nejmensim identifikatorem: {%d, \"%s\"}\n",
                item->data.id, item->data.name);
    	}
    	else
                printf("Polozka s nejmensim identifikatorem nenalezena\n");
    
        printf("list_find_name...\n");
        char* name = "Honza";
        item = list_find_name(sznm, name);
        if (item != NULL) {
                 printf("Polozka s daty %s nalezena\n", name);
    	}
    	else
                 printf("Polozka s daty %s nenalezena.\n",name);
    
        printf("list_dtor...\n");
        list_dtor(sznm);
        printf("Seznam prazdny: %s\n", isEmpty(sznm) ? "ano" : "ne");
    
        return 0;
    }
    
    
    Řešení 1× (Вherzet)
    18.12.2020 11:58 z_sk | skóre: 34 | blog: analyzy
    Rozbalit Rozbalit vše Re: Jazyk C JEDNOSMĚRNĚ VÁZANÝ SEZNAM
    list_delete_first() je zle. Neosetrujes, ak je list prazdny. V tom pripade najskor dojde k segmentation fault.
    debian.plus@protonmail.com
    NUKE GAZA! 🎆 avatar 18.12.2020 15:28 NUKE GAZA! 🎆 | skóre: 37 | blog: Grétin blogísek | 🇮🇱==❤️ , 🇵🇸==💩 , 🇪🇺==☭
    Rozbalit Rozbalit vše Re: Jazyk C JEDNOSMĚRNĚ VÁZANÝ SEZNAM

    ttssssssssssssssssss zato jako muže učitelskej že nám dal blbou testovací funkci main by sme nato jako mohli ve tři ráno nějak po spuštění hnedka přijít :O :/ :D ;D

    v zadání seto po nás chce aby seto jako hlídalo vtý samotný fci todleto takže máš pravdu :D ;D je tam teda potřeba připsat hlídací řádeček na prázdnej list/seznam malej a pak to snad bude uplně dobrý :O :O

    takle třeba ta funkce

    .
    .
    .
    
    void list_delete_first(Seznam * sznm)
    {
        // pokud je první položka null tak nebudem nic vodstraňovat a vrátíme se z funkce/přerušíme ji
        if(sznm->first == NULL)return;
        // nebo takle
        // if(!sznm->first)return;
    
        PolozkaSeznamu * prvni = sznm->first;
        PolozkaSeznamu * druha = prvni->next;
        free(prvni);
        sznm->first = druha;
    }
    
    .
    .
    .
    
    18.12.2020 18:02 Peter Golis | skóre: 65 | blog: Bežné záležitosti | Bratislava
    Rozbalit Rozbalit vše Re: Jazyk C JEDNOSMĚRNĚ VÁZANÝ SEZNAM
    On to tam dal z klasického dôvodu, aby mu to našiel Gogoľ keď bude na troch kráľov kontrolovať ktoré z detí si to nechalo vypracovať voľakde po internetoch.
    NUKE GAZA! 🎆 avatar 18.12.2020 20:17 NUKE GAZA! 🎆 | skóre: 37 | blog: Grétin blogísek | 🇮🇱==❤️ , 🇵🇸==💩 , 🇪🇺==☭
    Rozbalit Rozbalit vše Re: Jazyk C JEDNOSMĚRNĚ VÁZANÝ SEZNAM

    učitelskej línej jeto pořádně naučit a bude jako googlit svý zadání pocelým internetu jóóó?? :O :O :D :D ;D ;D

    18.12.2020 21:10 Peter Golis | skóre: 65 | blog: Bežné záležitosti | Bratislava
    Rozbalit Rozbalit vše Re: Jazyk C JEDNOSMĚRNĚ VÁZANÝ SEZNAM
    Kto tvrdí že nespal na výučbe, ten tam spí do teraz.
    NUKE GAZA! 🎆 avatar 23.12.2020 13:46 NUKE GAZA! 🎆 | skóre: 37 | blog: Grétin blogísek | 🇮🇱==❤️ , 🇵🇸==💩 , 🇪🇺==☭
    Rozbalit Rozbalit vše Re: Jazyk C JEDNOSMĚRNĚ VÁZANÝ SEZNAM

    asi natom stim googlením jako něco bude hele :O :D :D ;D

    23.12.2020 16:45 Peter Golis | skóre: 65 | blog: Bežné záležitosti | Bratislava
    Rozbalit Rozbalit vše Re: Jazyk C JEDNOSMĚRNĚ VÁZANÝ SEZNAM
    To sa deje odkedy zaviedli internet do škôl.

    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.