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 13:00 | Humor

    Agent umělé inteligence Claude Opus ignoroval uživatelovu odpověď 'ne' na dotaz, zda má implementovat změny kódu, a přesto se pokusil změny provést. Agent si odpověď 'ne' vysvětlil následovně: Uživatel na mou otázku 'Mám to implementovat?' odpověděl 'ne' - ale když se podívám na kontext, myslím, že tím 'ne' odpovídá na to, abych žádal o svolení, tedy myslí 'prostě to udělej, přestaň se ptát'.

    NUKE GAZA! 🎆 | Komentářů: 4
    dnes 00:44 | IT novinky

    Po 8. květnu 2026 už na Instagramu nebudou podporované zprávy opatřené koncovým šifrováním. V chatech, kterých se bude změna týkat, se objeví pokyny o tom, jak si média nebo zprávy z nich stáhnout, pokud si je chcete ponechat.

    Ladislav Hagara | Komentářů: 5
    dnes 00:33 | IT novinky

    V lednu byla ve veřejné betě obnovena sociální síť Digg (Wikipedie). Dnes bylo oznámeno její ukončení (Hard Reset). Společnost Digg propouští velkou část týmu a přiznává, že se nepodařilo najít správné místo na trhu. Důvody jsou masivní problém s boty a silná konkurence. Společnost Digg nekončí, malý tým pokračuje v práci na zcela novém přístupu. Cílem je vybudovat platformu, kde lze důvěřovat obsahu i lidem za ním. Od dubna se do Diggu na plný úvazek vrací Kevin Rose, zakladatel Diggu z roku 2004.

    Ladislav Hagara | Komentářů: 5
    včera 12:33 | Zajímavý projekt

    MALUS je kontroverzní proprietarní nástroj, který svým zákazníkům umožňuje nechat AI, která dle tvrzení provozovatelů nikdy neviděla původní zdrojový kód, analyzovat dokumentaci, API a veřejná rozhraní jakéhokoliv open-source projektu a následně úplně od píky vygenerovat funkčně ekvivalentní software, ovšem pod libovolnou licencí.

    NUKE GAZA! 🎆 | Komentářů: 17
    včera 03:55 | Bezpečnostní upozornění

    Příspěvek na blogu Ubuntu upozorňuje na několik zranitelností v rozšíření Linuxu o mandatorní řízení přístupu AppArmor. Společně jsou označovány jako CrackArmor. Objevila je společnost Qualys (technické detaily). Neprivilegovaný lokální uživatel se může stát rootem. Chyba existuje od roku 2017. Doporučuje se okamžitá aktualizace. Problém se týká Ubuntu, Debianu nebo SUSE. Red Hat nebo Fedora pro mandatorní řízení přístupu používají SELinux.

    Ladislav Hagara | Komentářů: 2
    12.3. 17:22 | Nová verze

    Byla vydána nová verze 19 integrovaného vývojového prostředí (IDE) Qt Creator. Podrobný přehled novinek v changelogu.

    Ladislav Hagara | Komentářů: 0
    12.3. 03:44 | Nová verze

    Bitwig Studio (Wikipedie) bylo vydáno ve verzi 6. Jedná se o proprietární multiplatformní (macOS, Windows, Linux) digitální pracovní stanici pro práci s audiem (DAW).

    Ladislav Hagara | Komentářů: 4
    12.3. 02:11 | Komunita

    Společnost Igalia představila novou linuxovou distribuci (framework) s názvem Moonforge. Jedná se o distribuci určenou pro vestavěné systémy. Vychází z projektů Yocto a OpenEmbedded.

    Ladislav Hagara | Komentářů: 0
    12.3. 00:44 | Nová verze

    Google Chrome 146 byl prohlášen za stabilní. Nejnovější stabilní verze 146.0.7680.71 přináší řadu novinek z hlediska uživatelů i vývojářů. Podrobný přehled v poznámkách k vydání. Opraveno bylo 29 bezpečnostních chyb. Vylepšeny byly také nástroje pro vývojáře.

    Ladislav Hagara | Komentářů: 0
    12.3. 00:22 | Nová verze

    D7VK byl vydán ve verzi 1.5. Jedná se o fork DXVK implementující překlad volání Direct3D 3 (novinka), 5, 6 a 7 na Vulkan. DXVK zvládá Direct3D 8, 9, 10 a 11.

    Ladislav Hagara | Komentářů: 0
    Které desktopové prostředí na Linuxu používáte?
     (16%)
     (7%)
     (0%)
     (12%)
     (29%)
     (2%)
     (5%)
     (1%)
     (13%)
     (24%)
    Celkem 1076 hlasů
     Komentářů: 26, poslední 12.3. 08:56
    Rozcestník

    Dotaz: Jak sestavit podmínku v programu c

    8.2.2024 06:20 Matěj
    Jak sestavit podmínku v programu c
    Přečteno: 1562×
    Ahoj, potřeboval bych vytvořit podmínku, jelikož já s ní nejsem schopen hnout. Mám aktuální teplotu, minimální teplotu, maximální teplotu a relé kotle. Jak sestavit podmínku, když potřebuji aby bylo relé sepnuto pokud je aktuální teplota nižší než maximální teplota, po dosáhnutí maximální teploty aby se relé rozeplo a zapnulo se až aktuální teplota spadne na minimální teplotu. Může mi prosím někdo poradit? Děkuji

    Odpovědi

    8.2.2024 08:10 Vtipnéř | skóre: 39 | blog: Vtipnéřův blog | Brno
    Rozbalit Rozbalit vše Re: Jak sestavit podmínku v programu c
    Je potřeba mít nějaký indikátor, že byla dosažena maximální teplota, aby se rozlišil stav na začátku procesu od stavu, kdy je relé rozepnuto po dosažení maximální teploty. Indikátor by se přepínal při dosažení maximální nebo minimální teploty. Asi by bylo možné použít jako tento indikátor i stav, ve kterém je relé, jen by se musel nějak ošetřit začátek procesu.

    Jirka
    Opening Windows is better than washing them. Clearing Windows (e.g. erasing or deleting) is even much better.
    AraxoN avatar 8.2.2024 08:25 AraxoN | skóre: 47 | blog: slon_v_porcelane | Košice
    Rozbalit Rozbalit vše Re: Jak sestavit podmínku v programu c
    assert(min_teplota < max_teplota);
    
    while (true) {
      teplota = getTeplota();
      if (teplota <= min_teplota) {
        setRele(true);
      } else if (teplota >= max_teplota) {
        setRele(false);
      }
    }
    8.2.2024 08:48 Vtipnéř | skóre: 39 | blog: Vtipnéřův blog | Brno
    Rozbalit Rozbalit vše Re: Jak sestavit podmínku v programu c
    Otázka je, jestli je efektivní dát to do cyklu. Pokud je to kotel v domě, klidně by stačilo kontrolovat to jednou za minutu. V každém případě je potřeba před začátkem cyklu sepnout relé, pokud je teplota menší než maximální.
    Opening Windows is better than washing them. Clearing Windows (e.g. erasing or deleting) is even much better.
    8.2.2024 11:04 Matěj
    Rozbalit Rozbalit vše Re: Jak sestavit podmínku v programu c
    Četl jsi špatně otázku... Kdyby to bylo tak primitivní, tak to zvládnu sám....
    8.2.2024 11:24 Vtipnéř | skóre: 39 | blog: Vtipnéřův blog | Brno
    Rozbalit Rozbalit vše Re: Jak sestavit podmínku v programu c
    Četl jsi špatně otázku... Kdyby to bylo tak primitivní, tak to zvládnu sám....
    Vzhledem k řazení příspěvků v diskusi není úplně jisté, jestli reaguješ na to, co psal AraxoN, nebo na moji odpověď.

    Jirka
    Opening Windows is better than washing them. Clearing Windows (e.g. erasing or deleting) is even much better.
    8.2.2024 12:05 Matěj
    Rozbalit Rozbalit vše Re: Jak sestavit podmínku v programu c
    Omlouvám se, reagoval jsem na ten kód od uživatele AraxoN.
    8.2.2024 22:16 TechnikTom
    Rozbalit Rozbalit vše Re: Jak sestavit podmínku v programu c
    Ale ten kód bude fungovat, přeci.

    Máte nižší teplotu než Tmin? - sepne relé a nešahá na něj než než dosáhnete Tmax.

    Jakmile překročíte Tmax, vypnete relé a už na něj nesaháte, než klesnete pod Tmin.

    zapni relé

    cyklus:

    Teplota menší než Tmin? zapni relé

    Teplota větší než Tmax? vypni relé

    konec cyklu

    Jednoduše dokud je teplota menší než Tmin posílá se signál k zapnutí relé.

    Po překročení Tmin zůstává relé zapnuté a až při překročení Tmax se pošle signál pro jeho vypnutí.

    Ten se v cyklu posílá opakovaně, dokud je teplota vyšší než Tmax.

    Jakmile teplota klesne pod Tmax, žádný signál se na relé neposílá a relé zůstává vypnuté než zase klesnete pod Tmin.

    Prostě pokud je teplota mezi Tmin a Tmax s relé nic neděláte a necháváte ho ve stavu, v jakém jste do toho intervalu vešel.

    Do progr. jazyka si to přepište sám a ošetřete počáteční podmínky.
    8.2.2024 12:07 Vtipnéř | skóre: 39 | blog: Vtipnéřův blog | Brno
    Rozbalit Rozbalit vše Re: Jak sestavit podmínku v programu c
    Četl jsi špatně otázku... Kdyby to bylo tak primitivní, tak to zvládnu sám....
    Vzhledem k řazení příspěvků v diskusi není úplně jisté, jestli reaguješ na to, co psal AraxoN, nebo na moji odpověď.

    Jirka
    Mimochodem, myslím, že to, co radil AraxoN, s doplněním počátečního sepnutí, dává smysl, pokud by to běželo na nějakém jednoduchém řídícím čipu, který nedělá nic jiného. Problém by mohly být případné výjimečné situace.
    Opening Windows is better than washing them. Clearing Windows (e.g. erasing or deleting) is even much better.
    AraxoN avatar 8.2.2024 13:34 AraxoN | skóre: 47 | blog: slon_v_porcelane | Košice
    Rozbalit Rozbalit vše Re: Jak sestavit podmínku v programu c
    Tak to sa ospravedlňujem, pokazila sa mi veštecká guľa. :D
    9.2.2024 17:31 MarV | skóre: 11
    Rozbalit Rozbalit vše Re: Jak sestavit podmínku v programu c
    A kterou část otázky AraxoN řešení nesplňuje? Logiku věci tam vidím ...
    8.2.2024 11:48 X
    Rozbalit Rozbalit vše Re: Jak sestavit podmínku v programu c
    Komunikace s kotlem = vycitani hodnot je realizovano jak? Protokol,sbernice etc.
    8.2.2024 12:08 Matěj
    Rozbalit Rozbalit vše Re: Jak sestavit podmínku v programu c
    To není přeci podstatné, ptal jsem se na logiku/podmínku.
    13.2.2024 19:50 Xerces
    Rozbalit Rozbalit vše Re: Jak sestavit podmínku v programu c
    A nechceš zavolat raději na podporu výrobce toho kotle? Aby se ti to pak díky neošetření něčeho, co nepovažuješ za podstatné (třeba že vždy platí Tmin < Tmax), nepropálilo těma rozžhavenýma nožičkama do podlahy. :-)
    8.2.2024 12:02 Tomáš
    Rozbalit Rozbalit vše Re: Jak sestavit podmínku v programu c
    Hádám, že potřebujete stavovou proměnou: aktuální stav relé zapnuto/vypnuto. Bez takové informace o stavu to asi nepůjde.
    8.2.2024 12:15 Matěj
    Rozbalit Rozbalit vše Re: Jak sestavit podmínku v programu c
    Z těchto proměnných potřebuji vytvořit podmínku (můžu klidně nějakou přidat, pokud bude potřeba)

    var rele = 0; // 0 = zapnuto, 1 = vypnuto

    var aktualni_teplota; // obsahuje teplotu ve tvaru (například pro 18,75°C) 1875

    var minimalni_teplota; // obsahuje teplotu ve tvaru (například pro 20,50°C) 1050

    var maximalni_teplota; // obsahuje teplotu ve tvaru (například pro 24,00°C) 2400
    8.2.2024 12:16 Matěj
    Rozbalit Rozbalit vše Re: Jak sestavit podmínku v programu c
    EDIT! *1050 // Oprava na 2050, uklepl jsem se.
    9.2.2024 18:16 čavo | skóre: 16
    Rozbalit Rozbalit vše Re: Jak sestavit podmínku v programu c
    Hádam som sa niekde nepomýlil.
    if aktualni_teplota <= minimalni_teplota || ( rele == 1 && aktualni_teplota < maximalni_teplota) {
      rele = 1;
    } else {
      rele = 0;
    }
    
    9.2.2024 18:20 čavo | skóre: 16
    Rozbalit Rozbalit vše Re: Jak sestavit podmínku v programu c
    Tak pomýlil, je tam opačná logika hodnoty relé, tak treba zmeniť všade 1 za 0 a 0 za 1.
    10.2.2024 22:17 Radovan
    Rozbalit Rozbalit vše Re: Jak sestavit podmínku v programu c
    Tyhlety školní úkoly :-D
    if (kotel(teplota) < maxtep) zapnout(ohřev);
    do {
       if (kotel(teplota) > maxtep) vypnout(ohřev);
       if (kotel(teplota) < mintep) zapnout(ohřev);
       } while(topit());
    vypnout(ohřev);
    Přidat tam hlídání hladiny a tlaku je triviální.
    cbrpnk avatar 13.2.2024 08:53 cbrpnk | skóre: 10 | blog: bl0gium
    Rozbalit Rozbalit vše Re: Jak sestavit podmínku v programu c
    #include <stdio.h>
    #include <stdbool.h>
    
    bool regulace_kotle(float aktualni_teplota, float minimalni_teplota, float maximalni_teplota) {
      /*
      Funkce pro regulaci kotle.
    
      Argumenty:
        aktualni_teplota: Aktuální teplota.
        minimalni_teplota: Minimální požadovaná teplota.
        maximalni_teplota: Maximální požadovaná teplota.
    
      Vrací:
        Stav relé kotle (true/false).
      */
    
      if (aktualni_teplota < minimalni_teplota) {
        // Teplota je nízká, zapneme relé.
        return true;
      } else if (aktualni_teplota >= maximalni_teplota) {
        // Teplota je vysoká, vypneme relé.
        return false;
      } else {
        // Teplota je v požadovaném rozmezí, relé zůstane beze změny.
        return false;  // Předpokládám, že chcete prozatím relé vypnout
      }
    }
    
    int main() {
      float aktualni_teplota = 22.5;
      float minimalni_teplota = 20;
      float maximalni_teplota = 25;
    
      bool stav_rele = regulace_kotle(aktualni_teplota, minimalni_teplota, maximalni_teplota);
    
      printf("Aktualni teplota: %.1f°C\n", aktualni_teplota);
      printf("Minimalni teplota: %.1f°C\n", minimalni_teplota);
      printf("Maximalni teplota: %.1f°C\n", maximalni_teplota);
      printf("Stav rele: %s\n", stav_rele ? "zapnuto" : "vypnuto");
    
      return 0;
    }
    
    13.2.2024 18:30 tttttttttttt
    Rozbalit Rozbalit vše Re: Jak sestavit podmínku v programu c
    Tohle nesplňuje zadání. Relé se po zapnutí vypne jakmile přeleze minimální teplotu. Ten skript funguje stejně pro jakoukoliv maximální teplotu.
    14.2.2024 01:10 TecnikTom
    Rozbalit Rozbalit vše Re: Jak sestavit podmínku v programu c
    A na to jste přišel při pohledu na tu jedinou podmínku pro vypnutí relé, kdy je to podmíněno vyšší nebo rovnou teplotou než Tmax???
    14.2.2024 01:50 ttttttttttt
    Rozbalit Rozbalit vše Re: Jak sestavit podmínku v programu c
    Ano. Celý tenhle kód
    if (aktualni_teplota >= maximalni_teplota) {
      // Teplota je vysoká, vypneme relé.
      return false;
    } else {
      // Teplota je v požadovaném rozmezí, relé zůstane beze změny.
      return false;  // Předpokládám, že chcete prozatím relé vypnout
     }
    jde nahradit za
    return false;
    14.2.2024 12:19 TechnikTom
    Rozbalit Rozbalit vše Re: Jak sestavit podmínku v programu c
    Máte pravdu.

    Já takhle v noci přehlédl, že sice napsal:

    // Teplota je v požadovaném rozmezí, relé zůstane beze změny.

    Ale pak tam stejně aktivně vrazil "return false"
    20.2.2024 23:42 Stydím se...
    Rozbalit Rozbalit vše Re: Jak sestavit podmínku v programu c
    AI je mocný nástroj pro příliš hloupé a líné lidi jako jsem například já (nejsem profesí programátor). Každopádně máte asi chybné zadaní, musel jsem je patřičně upravit aby to dávalo smysl.
    #include <stdio.h>
    int main() {
        int minimalni_teplota = 2050;
        int maximalni_teplota = 2400;
        int aktualni_teplota;
        int rele_stav = 0; // 0 pro vypnuto, 1 pro zapnuto
        while (1) {  // Nekonečná smyčka
            printf("Rele stav:        %d\n", rele_stav);  // Výpis stavu relé
            printf("Teplota v 0.01°C: ");
    	    scanf("%d", &aktualni_teplota);
            if (aktualni_teplota < minimalni_teplota) {
                rele_stav = 1; // Sepnout relé
            } else if (aktualni_teplota >= maximalni_teplota) {
                rele_stav = 0; // Rozepnout relé
            }
        }
        return 0;
    }
    
    Tento kód vypisuje stav relé a čeká na uživatelský vstup teploty v jednotkách setin stupňů Celsia. Pokud je teplota nižší než minimální teplota, relé se spustí; pokud je teplota rovna nebo vyšší než maximální teplota, relé se vypne.
    21.2.2024 22:24 TechnikTom
    Rozbalit Rozbalit vše Re: Jak sestavit podmínku v programu c
    Zadání není chybné, jen ten váš kód ho nesplňuje.

    Zadání zní, že pokud je teplota nižší než Tmax, má vystoupat k Tmax a pak se má udržovat v rozmezí Tmin a Tmax.

    Váš kód, pokud spustíte v okamžiku, kdy je teplota mezi, tak nevystoupá k Tmax, ale hned klesne k Tmin.

    Je třeba:

    A) prakticky - vstoupit do regulačního cyklu se zapnutým relé

    B) puristicky - buď před cyklem otestovat a zapnout relé pokud jsme pod Tmax nebo v cyklu testovat jeho první běh a provést totéž.
    22.2.2024 03:43 Stydim se...
    Rozbalit Rozbalit vše Re: Jak sestavit podmínku v programu c
    A tak, nedbale jsem si vaše zadání přečetl. Potřebujeme na počátku dohřát na maximální teplotu. Jinak je ale kód správný a funkční, stačí před nekonečnou smyčku doplnit:
    if (aktualni_teplota < maximalni_teplota) rele_stav = 1; // Sepnout relé
    Nic jednoduššího mě nenapadá.

    A) Začínat se zapnutým relé int rele_stav = 1; není úplně čisté řešení. Po spuštění, při (aktualni_teplota >= maximalni_teplota) by relé bylo zapnuto jen na okamžik, v rámci jednoho cyklu - v případě pomalého taktu procesoru, rychlého relé a velkého spínaného výkonu by to teoreticky mohlo způsobit potíže. Šlo by to ošetřit, ale to by bylo zbytečně krkolomné.

    B) Testovaní prvního běhu v nekonečném cyklu je nepraktické, zbytečně by se opakovalo a kód by byl složitější.

    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.