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

    Německý kancléř Friedrich Merz (CDU) se během debaty s finalisty studentské vědecké soutěže Jugend forscht vyjádřil pro konec anonymity na internetu a vyslovil názor, že pro uživatele Internetu by měla platit podobná právní odpovědnost jako pro novináře tradičních médií. Na dotaz studenta, jak by se tedy povinnost uvádět pravé jméno slučovala s prací investigativních novinářů nebo ochranou jejich zdrojů, Merz neodpověděl, ve své

    … více »
    AfD 💙 | Komentářů: 1
    včera 17:55 | IT novinky

    Společnost Fujitsu představila FUJITSU-MONAKA CPU a Fujitsu MONAKA Server. Navrženo, vyvinuto a vyrobeno v Japonsku. Pro suverénní AI infrastrukturu.

    Ladislav Hagara | Komentářů: 0
    včera 16:44 | IT novinky

    Předprodej v květnu představených notebooků Googlebook, nástupců notebooků Chromebook, bude spuštěn v pondělí 21. září.

    Ladislav Hagara | Komentářů: 4
    16.9. 23:22 | Nová verze

    Byla vydána betaverze Fedora Linuxu 45 (ChangeSet), tj. poslední zastávka před vydáním finální verze, která je naplánována na úterý 20. října. S konzolí kmscon místo fbcon. Současně byla vydána betaverze Fedora Linux Asahi Remixu 45. S podporou čipů M3.

    Ladislav Hagara | Komentářů: 1
    16.9. 21:44 | Nová verze

    Po půl roce vývoje od vydání verze 50 bylo vydáno GNOME 51 s kódovým názvem "A Coruña" (Mastodon). Podrobný přehled novinek i s náhledy v poznámkách k vydání a v novinkách pro vývojáře. Videopředstavení na PeerTube a YouTube.

    Ladislav Hagara | Komentářů: 24
    16.9. 20:44 | IT novinky

    OpenAI spolupracuje s konkurenty Anthropic a Google DeepMind ze skupiny Alphabet na bezpečnosti umělé inteligence (AI). Globální obavy ohledně existenčních rizik umělé inteligence vzrostly poté, co se o víkendu sešli vedoucí předních amerických firem z odvětví AI a vyzvali k pozastavení vývoje technologie.

    Ladislav Hagara | Komentářů: 4
    16.9. 20:33 | IT novinky

    Evropská unie navrhne zákaz sociálních sítí, online her a chatbotů pro děti mladší 13 let a možnost účtu pro děti do 15 let jen se souhlasem rodičů, oznámila šéfka Evropské komise Ursula von der Leyenová v dnešním projevu ve Štrasburku. Návrh předpisu nazvaného EU Kids Act představí Evropská komise ve čtvrtek. Von der Leyenová zdůraznila, že chce, aby se rovněž změnilo základní pravidlo: platformy budou muset dokázat, že jsou bezpečné.

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

    Byla vydána Java 27 / JDK 27. Nových vlastností (JEP - JDK Enhancement Proposal) je 9.

    Ladislav Hagara | Komentářů: 0
    15.9. 17:44 | Nová verze

    Byl vydán Mozilla Firefox 156.0. Přehled novinek v poznámkách k vydání a poznámkách k vydání pro vývojáře. Vestavěný prohlížeč PDF se nyní spouští o 45 % rychleji. Řešeny jsou rovněž bezpečnostní chyby. Nový Firefox 156 bude brzy k dispozici také na Flathubu a Snapcraftu.

    Ladislav Hagara | Komentářů: 0
    15.9. 14:11 | Nová verze

    Článek na Raspberry Pi představuje nový vzhled desktopu operačního systému Raspberry Pi OS v aktuálním vydání 2026-09-15.

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