Kezdőoldal » Számítástechnika » Programozás » Program aktuális időhöz...

Program aktuális időhöz képest 12 percenként jelezzen hogy kell ezt? (bővebben lent)

Figyelt kérdés

Ha elindítom a programot, kérje le az időt és aktuális időhöz képest mindig 12 perc múlva jelezzen, amíg ki nem lépek belőle.

Hogyan kell ezt megoldani?

A problémám az, hogy a másik dátum-változót miképpen lehet "12 perccel későbbre állítani".

Pascal-ban tudok csak.

Python-ban is érdekelne, ha egyszerűbb - Python-ban hihetetlenül érdekes hogy pár sorban meg lehet oldani dolgokat.

Eddig jutottam:


program idoprog;


uses crt, SysUtils;


var

ch : char;

most, mulva : TDateTime;

begin

most := now;

repeat

if KeyPressed then ch := ReadKey;

until ch = #27;

end.



2019. jún. 10. 16:59
1 2
 1/19 anonim ***** válasza:
100%

Nem kell tudni a jelenlegi időt.

Egy Timert kell indítani 12 perces intervallummal.

2019. jún. 10. 17:40
Hasznos számodra ez a válasz?
 2/19 A kérdező kommentje:

Az elsődleges próbálkozásom az volt, de a delay nem volt pontos, annak pontossága erősen függ a gép terhelésétől és nagyon könnyen megcsúszik, nem pontos.

Kiszámoltam hogy hány mp delay-t kell csinálni de hiába.

2019. jún. 10. 17:45
 3/19 Ozmium42 ***** válasza:

pythonban:


from time import sleep


sleep(másodpercek száma)


Szerintem a gép terheltségétől függetlenül jónak kell lennie. Próbáld ki.

2019. jún. 10. 18:14
Hasznos számodra ez a válasz?
 4/19 A kérdező kommentje:
Értem, Pascal-ban próbáltam a "delay"-vel azzzal nem volt jó.
2019. jún. 10. 18:53
 5/19 anonim ***** válasza:
28%

Google:

[link]


Google első találat

[link]


Javaslom tanuld meg használni, mert le fogsz akadni minden egyes ilyen kérdésnél.

2019. jún. 10. 21:48
Hasznos számodra ez a válasz?
 6/19 tabaki ***** válasza:
48%

„Értem. Pascal-ban próbáltam a "delay"-vel...”


Megmondanád, minek? Timert használj, ahogyan már #1 is javasolta. Az időmérésnek a program futásától függetlenül kell mennie.

Nem látsz valami furcsát a következő párbeszédben?

-- „Egy 𝑻𝒊𝒎𝒆𝒓t kell indítani 12 perces intervallummal.”

-- „Az elsődleges próbálkozásom az volt, de a 𝒅𝒆𝒍𝒂𝒚 nem volt pontos...”

2019. jún. 10. 22:00
Hasznos számodra ez a válasz?
 7/19 tabaki ***** válasza:

Egyébként így elnézve a kódodat... azt a Timert nem fogod összeügyeskedni konzolos Free Pascal programban. Lazarusban elég egyszerű volna, de szerintem ott sem tartasz még. A fenti egyszerű programod megoldható azzal a kezdetleges és erőforrás-zabáló módszerrel, hogy az aktuális időt állandóan lekérdezed, és összehasonlítod a kezdés idejével (ha letelik, az lesz a kezdet), valahogy így:


program idoprog;

uses Crt, SysUtils, DateUtils;


var

&npsp; &npsp; &npsp; ch : char;

&npsp; &npsp; &npsp; most, elozo : TDateTime;


begin

elozo := now;

repeat

&npsp; &npsp; &npsp; most := now;

&npsp; &npsp; &npsp; if MinutesBetween(most, elozo) > 12 then

//&npsp; &npsp; &npsp; if SecondsBetween(most, elozo) > 5 then

&npsp; &npsp; &npsp; &npsp; &npsp; &npsp; begin

&npsp; &npsp; &npsp; &npsp; &npsp; &npsp; &npsp; &npsp; &npsp; WriteLn(' -- Letelt!');

&npsp; &npsp; &npsp; &npsp; &npsp; &npsp; &npsp; &npsp; &npsp; elozo := now;

&npsp; &npsp; &npsp; &npsp; &npsp; &npsp; end

&npsp; &npsp; &npsp; else

&npsp; &npsp; &npsp; &npsp; &npsp; &npsp; if KeyPressed then

&npsp; &npsp; &npsp; &npsp; &npsp; &npsp; &npsp; &npsp; &npsp; begin

&npsp; &npsp; &npsp; &npsp; &npsp; &npsp; &npsp; &npsp; &npsp; &npsp; &npsp; &npsp; ch := ReadKey;

&npsp; &npsp; &npsp; &npsp; &npsp; &npsp; &npsp; &npsp; &npsp; &npsp; &npsp; &npsp; Write(ch);

&npsp; &npsp; &npsp; &npsp; &npsp; &npsp; &npsp; &npsp; &npsp; end;&npsp; &npsp; &npsp;

until ch = #27;

end.


A kipróbáláshoz az „if MinutesBetween” kezdetű sort helyettesítsd az alatta lévő kikommentezett sorral, akkor 5 másodpercenként telik le az idő. De hangsúlyozom, ez nem az igazi, fölöslegesen dolgoztatja a gépet. Szerintem egyelőre ne erőltesd, a sima Free Pascalban nincs rá alapszintű, kész megoldás.

2019. jún. 11. 02:07
Hasznos számodra ez a válasz?
 8/19 tabaki ***** válasza:

+ Juj, de csúnya melléfogás! Álmosságtól félhülyén már nem kéne szerkesztési fortélyokkal szerencsétlenkednem. Próbáljuk meg újra:


program idoprog;

uses Crt, SysUtils, DateUtils;


var

      ch : char;

      most, elozo : TDateTime;


begin

elozo := now;

repeat

      most := now;

      if MinutesBetween(most, elozo) > 12 then

//       if SecondsBetween(most, elozo) > 5 then

            begin

                  WriteLn(' -- Letelt!');

                  elozo := now;

            end

      else

            if KeyPressed then

                  begin

                        ch := ReadKey;

                        Write(ch);

                  end;     

until ch = #27;

end.

2019. jún. 11. 02:12
Hasznos számodra ez a válasz?
 9/19 A kérdező kommentje:

Köszönöm szépen azoknak a válaszát, akik érdemben válaszoltak, nem bántó módon.

Valakitől segítséget lett volna érdemes kérnem magánban ahelyett hogy kiírom a kérdést.

Segítséget kértem, a megoldás egyszerűbb mint ahogy akár T. kolléga gondolja.

A megoldás ismertetésétől a hangvétel miatt eltekintenék

Ha esetleg erre jár aki segített nekem és úgy gondolja, hogy ismerteti, azt a döntést rá bízom.

2019. jún. 11. 07:55
 10/19 tabaki ***** válasza:
Hja... Mert az nem hangvétel, és nem bántó ugyebár, ha oda sem figyelsz a kapott válaszra, csak az a hangvétel, ha erre valaki megpróbálja felhívni a figyelmedet, utána meg az éjszaka közepén nekiül, hogy a programodnak legalább valami kétes értékű, de működőképes formára hozásával égesse magát a hozzáértő kollégák előtt. Süsd meg a megoldásodat, az a fő, hogy megkaptad. Ha valakinek ugyanez lesz a gondja-baja, majd hozzád irányítjuk.
2019. jún. 11. 22:34
Hasznos számodra ez a válasz?
1 2

Kapcsolódó kérdések:





Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!