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 23:33 | Nová verze

    Richard Biener oznámil vydání verze 16.1 (16.1.0) kolekce kompilátorů pro různé programovací jazyky GCC (GNU Compiler Collection). Jedná se o první stabilní verzi řady 16. Přehled změn, nových vlastností a oprav a aktualizovaná dokumentace na stránkách projektu. Některé zdrojové kódy, které bylo možné přeložit s předchozími verzemi GCC, bude nutné upravit.

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

    Zulip Server z open source komunikační platformy Zulip (Wikipedie, GitHub) byl vydán ve verzi 12.0. Přehled novinek v příspěvku na blogu.

    Ladislav Hagara | Komentářů: 0
    včera 12:11 | IT novinky

    Před 30 lety, tj. v úterý 30. dubna 1996, byl spuštěn Seznam.cz.

    Ladislav Hagara | Komentářů: 7
    včera 11:44 | Komunita

    Byly zpracovány a zveřejněny všechny videozáznamy, které stojí za zveřejnění, z konference FOSDEM 2026.

    Ladislav Hagara | Komentářů: 0
    včera 01:11 | IT novinky

    Od úterý 28. dubna musí nově uváděné notebooky v Evropské unii podporovat nabíjení přes USB-C. Jednotná nabíječka byla schválena Evropským parlamentem v říjnu 2022.

    Ladislav Hagara | Komentářů: 53
    29.4. 23:44 | Bezpečnostní upozornění

    Byly publikovány informace o kritické zranitelnosti CVE-2026-31431 pojmenované Copy Fail v Linuxu, konkrétně v kryptografii (AF_ALG). Běžný uživatel může získat práva roota (lokální eskalaci práv). Na všech distribucích Linuxu vydaných od roku 2017. Pomocí 732bajtového skriptu. V upstreamu je již opraveno. Zranitelnost byla nalezena pomocí AI Xint Code.

    Ladislav Hagara | Komentářů: 4
    29.4. 17:44 | Nová verze

    Textový editor Zed dospěl do verze 1.0. Představení v příspěvku na blogu.

    Ladislav Hagara | Komentářů: 0
    29.4. 04:44 | Komunita

    Vývojáři svobodného 3D softwaru Blender představili (𝕏, Mastodon, Bluesky) nejnovějšího firemního sponzora Blenderu. Je ním společnost Anthropic stojící za AI Claude a úroveň sponzoringu je Patron, tj. minimálně 240 tisíc eur ročně. Anthropic oznámil sponzorství v tiskové zprávě Claude for Creative Work.

    Ladislav Hagara | Komentářů: 7
    29.4. 03:55 | Nová verze

    VNC server wayvnc pro Wayland kompozitory postavené nad wlroots - ne GNOME, KDE nebo Weston - byl vydán ve verzi 0.10.0. Vydána byla také verze 1.0.0 související knihovny neatvnc.

    Ladislav Hagara | Komentářů: 0
    28.4. 16:22 | Nová verze

    Bylo oznámeno vydání Fedora Linuxu 44. Ve finální verzi vychází šest oficiálních edic: Fedora Workstation a Fedora KDE Plasma Desktop pro desktopové, Fedora Server pro serverové, Fedora IoT pro internet věcí, Fedora Cloud pro cloudové nasazení a Fedora CoreOS pro ty, kteří preferují neměnné systémy. Vedle nich jsou k dispozici také další atomické desktopy, spiny a laby. Podrobný přehled novinek v samostatných článcích na stránkách

    … více »
    Ladislav Hagara | Komentářů: 7
    Které desktopové prostředí na Linuxu používáte?
     (14%)
     (8%)
     (2%)
     (13%)
     (31%)
     (4%)
     (7%)
     (3%)
     (16%)
     (25%)
    Celkem 1468 hlasů
     Komentářů: 30, poslední 3.4. 20:20
    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: 1565×
    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.