abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    včera 17:11 | Nová verze

    Byl vydán Nextcloud Hub 8. Představení novinek tohoto open source cloudového řešení také na YouTube. Vypíchnout lze Nextcloud AI Assistant 2.0.

    Ladislav Hagara | Komentářů: 5
    včera 13:33 | Nová verze

    Vyšlo Pharo 12.0, programovací jazyk a vývojové prostředí s řadou pokročilých vlastností. Krom tradiční nadílky oprav přináší nový systém správy ladících bodů, nový způsob definice tříd, prostor pro objekty, které nemusí procházet GC a mnoho dalšího.

    Pavel Křivánek | Komentářů: 8
    včera 04:55 | Zajímavý software

    Microsoft zveřejnil na GitHubu zdrojové kódy MS-DOSu 4.0 pod licencí MIT. Ve stejném repozitáři se nacházejí i před lety zveřejněné zdrojové k kódy MS-DOSu 1.25 a 2.0.

    Ladislav Hagara | Komentářů: 36
    25.4. 17:33 | Nová verze

    Canonical vydal (email, blog, YouTube) Ubuntu 24.04 LTS Noble Numbat. Přehled novinek v poznámkách k vydání a také příspěvcích na blogu: novinky v desktopu a novinky v bezpečnosti. Vydány byly také oficiální deriváty Edubuntu, Kubuntu, Lubuntu, Ubuntu Budgie, Ubuntu Cinnamon, Ubuntu Kylin, Ubuntu MATE, Ubuntu Studio, Ubuntu Unity a Xubuntu. Jedná se o 10. LTS verzi.

    Ladislav Hagara | Komentářů: 13
    25.4. 14:22 | Komunita

    Na YouTube je k dispozici videozáznam z včerejšího Czech Open Source Policy Forum 2024.

    Ladislav Hagara | Komentářů: 3
    25.4. 13:22 | Nová verze

    Fossil (Wikipedie) byl vydán ve verzi 2.24. Jedná se o distribuovaný systém správy verzí propojený se správou chyb, wiki stránek a blogů s integrovaným webovým rozhraním. Vše běží z jednoho jediného spustitelného souboru a uloženo je v SQLite databázi.

    Ladislav Hagara | Komentářů: 0
    25.4. 12:44 | Nová verze

    Byla vydána nová stabilní verze 6.7 webového prohlížeče Vivaldi (Wikipedie). Postavena je na Chromiu 124. Přehled novinek i s náhledy v příspěvku na blogu. Vypíchnout lze Spořič paměti (Memory Saver) automaticky hibernující karty, které nebyly nějakou dobu používány nebo vylepšené Odběry (Feed Reader).

    Ladislav Hagara | Komentářů: 0
    25.4. 04:55 | Nová verze

    OpenJS Foundation, oficiální projekt konsorcia Linux Foundation, oznámila vydání verze 22 otevřeného multiplatformního prostředí pro vývoj a běh síťových aplikací napsaných v JavaScriptu Node.js (Wikipedie). V říjnu se verze 22 stane novou aktivní LTS verzí. Podpora je plánována do dubna 2027.

    Ladislav Hagara | Komentářů: 0
    25.4. 04:22 | Nová verze

    Byla vydána verze 8.2 open source virtualizační platformy Proxmox VE (Proxmox Virtual Environment, Wikipedie) založené na Debianu. Přehled novinek v poznámkách k vydání a v informačním videu. Zdůrazněn je průvodce migrací hostů z VMware ESXi do Proxmoxu.

    Ladislav Hagara | Komentářů: 0
    25.4. 04:11 | Nová verze

    R (Wikipedie), programovací jazyk a prostředí určené pro statistickou analýzu dat a jejich grafické zobrazení, bylo vydáno ve verzi 4.4.0. Její kódové jméno je Puppy Cup.

    Ladislav Hagara | Komentářů: 0
    KDE Plasma 6
     (74%)
     (8%)
     (2%)
     (16%)
    Celkem 823 hlasů
     Komentářů: 4, poslední 6.4. 15:51
    Rozcestník

    Dotaz: Jak sestavit podmínku v programu c

    8.2. 06:20 Matěj
    Jak sestavit podmínku v programu c
    Přečteno: 1084×
    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. 08:10 Vtipnéř | skóre: 38 | 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. 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. 08:48 Vtipnéř | skóre: 38 | 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. 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. 11:24 Vtipnéř | skóre: 38 | 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. 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. 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. 12:07 Vtipnéř | skóre: 38 | 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. 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. 17:31 MarV | skóre: 9
    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. 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. 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. 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. 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. 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. 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. 18:16 čavo | skóre: 13
    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. 18:20 čavo | skóre: 13
    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. 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. 08:53 cbrpnk | skóre: 8 | 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. 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. 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. 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. 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. 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. 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. 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.