Otázka: Problém. Elektronické hodiny založené na jednoduchých aritmetických operacích


Ahoj uživatelé fóra!
Pomoc s úkolem, prosím\u003e _<
Úkol:
Elektronické hodiny ukazují čas ve formátu h: mm: ss, to znamená, že nejprve je zaznamenán počet hodin, poté je povinný dvoumístný počet minut, poté je povinný dvoumístný počet sekund. Počet minut a sekund je v případě potřeby vyplněn nulami na dvouciferné číslo.

Od začátku dne uplynulo N sekund. Vytiskněte si, co budou ukazovat hodiny.
Vstupní data
Je zadáno celé číslo n.

Výstup
Vytiskněte odpověď na problém v požadovaném formátu.

Příklady
vstupní data
3602
výstup
1:00:02

To jsem udělal:

Jáva
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 import; import javax.swing.plaf.synth.SynthOptionPaneUI; import java.util.Scanner; úkol veřejné třídy (public static void main (String args) (Scanner in \u003d new Scanner (System .in); long n, h, m, s; n \u003d in.nextLong (); h \u003d (n% (3600 * 24 )) / 3600; m \u003d (n% 3600) / 60; s \u003d (n% 60); pokud (m< 10 ) { if (s< 10 ) { System .out .println (h+ ":0" +m+ ":0" +s) ; } else if (s> 10) (Systém .out .println (h + ": 0" + m + ":" + s);)) else if (m\u003e 10) (if (s< 10 ) { System .out .println (h+ ":" +m+ ":0" +s) ; } else if (s> 10) (Systém .out .println (h + ":" + m + ":" + s);))))

Toto řešení není ve všech případech správné, i když nechápu proč \u003d c
Pomozte mi najít problém, budu vděčný!

Odpovědět:

Jáva
1 2 3 int i \u003d 3602; LocalTime time \u003d LocalTime.MIDNIGHT .plus (i, SECONDS); Systém .out .println (čas);

Otázka: Elektronické hodiny s alarmem Delphi


Přátelé, musíme bránit praxi, dali úkolu elektronické hodiny s budíkem, kdo pomůže nebo vyhodí?)
Budu sooooo velmi, velmi vděčný)

Přidáno po 1 minutě
přátelé, nejlépe se zněním)

Odpovědět:

Zpráva od anegdot

Ukazují se elektronické hodiny

Pojďme se podívat na vaše hodinky a co je na nich špatného.


Vstupní data

Výstup





Krajta
1 2 3 4 5 6 7 8 9 n \u003d int (input ()), pokud n< 1440 : print (n//60 ) print (n%60 ) else : a = 1440 - n a *= -1 print (a//60 ) print (a%60 )

Odpovědět: Lze vyřešit bez podmínek:

Otázka: Elektronické hodiny


Je nutné vyvinout program, který implementuje elektronické hodiny. Čísla jsou implementována graficky pomocí sady obdélníků, nikoli v textové podobě.
Požadované prvky rozhraní: panel hlavní nabídky, prvky tvaru nebo použití vlastnosti plátna k kreslení čísel a ovládacích tlačítek.

Odpovědět: xxbesoxx, není to tak jednoduché. Úkol

Zpráva od Kapetra

Čísla jsou implementována graficky prostřednictvím sady obdélníků, nikoli v textové podobě

Kapetra,

P.S. pokud se podrobně podíváte na dané téma, najdete spoustu zajímavých věcí

Otázka: Problém elektronických hodin


Dané číslo n. Od začátku dne neuplynuly žádné minuty. Určete, kolik hodin a minut se digitální hodiny v tuto chvíli zobrazí.

Vstupní data
Je zadáno číslo n - celé číslo, kladné, nepřesahuje 10 až sedmou mocninu.

Výstup
Program by měl tisknout dvě čísla: počet hodin (0 až 23) a počet minut (0 až 59).

Všimněte si, že číslo n může být větší než počet minut za den.
__________________________________________________________________________________________
moje řešení, pomozte mi najít chybu.
___________________________________________________________________________________________

Pythonský kód
1 2 3 4 5 6 7 8 9 n \u003d int (input ()), pokud n< 1440 : print (n//60 ) print (n%60 ) else : a = 1440 - n a *= -1 print (a//60 ) print (a%60 )

Odpovědět:

Zpráva od Andrey_Goa

Zjistěte počet dní

Proč je to? Počet dní není nikde potřeba, pouze zbytek divize

Pythonský kód
1 2 hodiny \u003d (n% 1440) // 60 minut \u003d (n% 1440)% 60

Otázka: "Elektronické hodiny"


Samotný úkol: „Elektronické hodiny ukazují čas ve formátu h: mm: ss, to znamená, že nejprve je zaznamenán počet hodin, poté je povinný dvoumístný počet minut, poté dvoumístný počet sekund je povinný. Počet minut a sekund je v případě potřeby doplněn nulami na dvouciferné číslo.
Od začátku dne uplynulo N sekund. Vytiskněte, co budou ukazovat hodiny. “
Odkaz na to :.
Pascal
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 Čas programu2; var a, n: Celé číslo; Begin Readln (n); If n \u003d 0 then Writeln ("00", ":", "00", ":", "00") else If (n<3600 ) and ((n div 60 ) <10 ) and ((n mod 60 ) <10 ) then Writeln ("00:0" , n div 60 , ":0" , n mod 60 ) else If (n<3600 ) and ((n div 60 ) >\u003d 10) a ((n mod 60)\u003e \u003d 10) then Writeln ("00:", n div 60, ":", n mod 60) else If (n<86400 ) and (n>3600) a ((n div 3600)<10 ) and (((n mod 3600 ) div 60 ) <10 ) and (((n mod 3600 ) mod 60 ) <10 ) then Writeln ("0" , n div 3600 , ":0" , (n mod 3600 ) div 60 , ":0" , (n mod 3600 ) mod 60 ) else If (n<86400 ) and (n>3600) and (((n div 3600)\u003e \u003d 10) and (((n mod 3600) div 60)\u003e \u003d 10) and (((n div 3600) mod 60)\u003e 10) then Writeln (n div 3600, " : ", (n mod 3600) div 60,": ", (n mod 3600) mod 60) else If (n mod 86400 \u003d 0) pak Writeln (" 00 ",": "," 00 ",": " , "00") else a: \u003d n mod 86400; If (n\u003e 86400) and ((a div 3600)\u003e \u003d 10) and (((a mod 3600) div 60)\u003e \u003d 10) and (((a mod 3600) mod 60)\u003e \u003d 10) then Begin ( a: \u003d n mod 86400;) Writeln (a div 3600, ":", (a mod 3600) div 60, ":", (a mod 3600) mod 60) end else If (n\u003e 86400) a ((a div 3600)<10 ) and (((a mod 3600 ) div 60 ) <10 ) and (((a mod 3600 ) mod 60 ) <10 ) then Writeln ("0" , a div 3600 , ":0" , (a mod 3600 ) div 60 , ":0" , (a mod 3600 ) mod 60 ) end .

Problém je v tom, že dokud jsem se nezačal snažit, aby byl výstup ve „správném“ formátu, všechno bylo v pořádku. Vydalo to pro všechna uvedená čísla, otestovalo 30 možností. Začal jsem trpět těmito nulami, které by se měly objevit před minutami nebo sekundami, pokud jich je méně než 10 a všechno šlo do pekla. Nyní program funguje správně pouze na určitých číslech a já jsem zatím nebyl schopen zachytit „spouštěcí“ algoritmus. U většiny čísel program jednoduše nic nevydá. Přinejmenším to poskytlo nějaké chyby, ale ne, jen prázdná obrazovka.
Tento způsob „správného“ záznamu prostřednictvím „Pokud“ má právo na život?
Zde je původní verze, kde bylo vše zobrazeno ve špatném formátu, ale v zásadě správné

Pascal
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 Čas programu2; var a, n: Celé číslo; Begin Readln (n); If n \u003d 0 then Writeln ("00", ":", "00", ":", "00") else If n<86400 then Writeln (n div 3600 , ":" , (n mod 3600 ) div 60 , ":" , (n mod 3600 ) mod 60 ) else If n mod 86400 = 0 then Writeln ("00" , ":" , "00" , ":" , "00" ) else If n>86400 then Begin a: \u003d n mod 86400; Writeln (a div 3600, ":", (a mod 3600) div 60, ":", (a mod 3600) mod 60); konec konec.

A v jakém případě je program vůbec „jen tichý“?

Odpovědět:

Pascal
1 2 3 4 5 6 7 8 9 10 11 12 var n: Longint; h, m, s: Celé číslo; start ReadLn (n); h: \u003d n div 3600 mod 24; m: \u003d n mod 3600 div 60; s: \u003d n mod 3600 mod 60; Napište (h, ":"); pokud m<10 then Write ("0" ) ; Write (m, ":" ) ; if s<10 then Write ("0" ) ; WriteLn (s) ; end .

Otázka: Elektronické hodiny s budíkem


Ahoj lidi! Pomozte mi prosím zjistit problém. K dispozici jsou elektronické hodiny, které ukazují reálný čas. Ve formuláři musíte umístit 3 tlačítka: „H“, „M“, „A“. Knoflík
„H“ (hodiny) zvyšuje počet hodin a tlačítko „M“ (minuty) zvyšuje počet minut. Ke zvýšení dochází modulo 24, respektive 60. Takové hodinky mají jednoduché chování, protože každá ze dvou vstupních akcí (stisknutí prvního nebo druhého tlačítka) vede k jedné předem
určitá reakce hodin. V nich je navrženo další tlačítko „A“ (Alarm) pro zapnutí a vypnutí alarmu. Pokud je alarm vypnutý, tlačítko „A“ jej zapne a přepne hodinky na
která tlačítka „H“ a „M“ nenastavují aktuální čas, ale dobu odezvy
budík. Opětovným stisknutím tlačítka „A“ se hodinky vrátí do normálního režimu. To vše by navíc mělo být prováděno pomocí automatického programování. Tady je projekt:
Učitel ale uvedl výpis programu, ale pouze v C ++. Pomozte prosím, možná někdo udělal něco podobného. Možná to můžete nějak předělat.
C ++
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 classAlarm_Clock (public: voidh_button () // Stisknutím tlačítka H. (if (is_in_alarm_time_mode) (alarm_hours \u003d (alarm_hours + 1)% 24;) else (hours \u003d (hours + 1)% 24;)) voidm_button () // Stiskněte tlačítko M (if (is_in_alarm_time_mode) (alarm_minutes \u003d (alarm_minutes) + 1)% 60;) else (minuty \u003d (minuty + 1)% 60;)) voida_button () // Stisknutím tlačítka A. (if (is_alarm_on) (if (is_in_alarm_time_mode) (is_in_alarm_time_mode \u003d false;) else (bell_off (); is_alarm_on \u003d false;)) else (is_alarm_on \u003d true; is_in_alarm_time_mode \u003d true;)) voidtick () // Aktivace minutového časovače (if (is_alarm_on &&! is_in_alarm_time_mode) { -li((minut == alarm_minutes1 ) && (hodin == alarm_hours ) || (alarm_minutes == 0 ) && (minut == 59 ) && (hodin == alarm_hours1 ) ) bell_on () ; elseif ((minut == alarm_minutes ) && (hodin == alarm_hours ) ) bell_off () ; } minut = (minut + 1 ) % 60 ; -li(minut == 0 ) hodin = (hodin + 1 ) % 24 ; } soukromé: inthours ; // Aktuální hodiny minuty ; // Minuty aktuálního času intalarm_hours ; // Budík intalarm_minutes ; // Minuty, aby zazněl budík boolis_alarm_on ; // Je zapnutý alarm? boolis_in_alarm_time_mode ; // Je režim budíku aktivní? voidbell_on () { ...} // Povolit hovor voidbell_off () { ...} // Vypnutí hovoru } ;

Opravil jsem digitální hodiny. To je nereálně cool vzhledem k tomu, že nikdy nejsem elektronik. Toto je poprvé v mém životě. Porucha spočívala v tom, že se začali vypínat v okamžiku, kdy se spustil alarm. Myslel jsem, že klimatizace ztratila klimatizaci. I přes tento pohyb mám stále klimatizační jednotky, které byly připájeny z nějaké staré desky. Nohy byly odpovídajícím způsobem velmi krátké. Přidal jsem dráty. Pájel jsem to paralelně se starým a fungovalo to. Zajímavé je, že na palubě bylo místo jen pro další klimatizaci.

Obecná forma:

A tady je zelená hlaveň - připájel jsem ji:

Funguje skvěle.

Za prvé jsem se rozhodl experimentovat. Nedávno jsem se dozvěděl o dynamických ukazatelích. To znamená, že žhavé indikátory mnoha zařízení nesvítí neustále po celou dobu, ale neustále blikají, protože je to levnější a méně vodičů. (To neplatí pro tekuté krystaly. Nesvítí vůbec, jsou to filtry a světlo pod nimi svítí.) Zajímalo by mě, jak to ovlivňuje nervový systém ... Chcete-li zkontrolovat, můžete pořídit fotografii nějaké desky při krátké expozici několikrát a tam budou viditelné všechny drygotya. U těchto hodinek byla rychlost závěrky viditelná již při 1/150.





Pokud někdo nerozuměl: Sundal jsem si dokonale fungující hodinky. Bez ohledu na to, jak moc se díváte pozorně, je nemožné vidět jakékoli blikání pouhým okem. Nastavte rychlost závěrky na 1/25 - vše se stane normálním:

A také s očima vypadá všechno normálně. Takto nás ukazatele klamou. Všechno.

Než byly vynalezeny první hodiny, lidé měřili čas pozorováním slunce. Ráno vychází slunce na jedné straně nad obzorem, poté prochází oblohou na opačnou stranu a zapadá pod horizont. Následujícího rána se stane totéž.

Nazývá se doba, během níž slunce provede úplnou revoluci den... Den přidává až týdny. Týdny až měsíce. Měsíce až roky. Roky až staletí.

Za jedno století - 100 let.

Za jeden rok - 12 měsíců.

Jeden měsíc - 30 nebo 31 dní (dnů).

V průběhu času byl den před polednem a po poledni rozdělen na dvě části. Každá část byla rozdělena na 12 částí - hodin. Proto je na hodinách 12 divizí. Celkově je to 24 hodin.

Pojďme se podívat na hodiny. Tučné čáry a čísla zde označují hodiny, na hodinách je 12 hodin. Malá ručička ukazuje na hodiny. Během dne udělá malá ručička dvě otáčky po dobu 12 hodin. Malá ruka se pomalu pohybuje z hodiny na hodinu.

Hodina je rozdělena na 60 částí - minut. To znamená za 1 hodinu 60 minut.

Ciferník hodinek je rozdělen na 60 částí (jedno rozdělení - jedna minuta). Velká ruka ukazuje minuty. Když velká ruka udělá jednu revoluci, uběhne hodina a malá ruka postoupí o 1 hodinu.

Odpočítávání začíná u značky 12. O půlnoci - 0 hodin 0 minut nebo 12:00.

Když malá ruka udělá plnou revoluci, uplyne 12 hodin a bude 12 hodin - poledne.

Na elektronických hodinách se čas zobrazuje v číslech, například 1:00 se zobrazí takto:

AM (latinsky ante meridiem - před polednem), což znamená, že zobrazený čas je v rozmezí od půlnoci do poledne nebo od 0 do 12 hodin.

Po 12 hodinách odpočítávání pokračuje. O hodinu později to bude 13 hodin nebo 1 hodina odpoledne, pak 14 (nebo 2 hodiny odpoledne):

PM (latinsky post meridiem - odpoledne) - zobrazený čas je v intervalu od poledne do půlnoci, tedy od 12 do 12 hodin nebo od 12 do 24 hodin

Minutová ručička vytvoří kruh za hodinu. Jedna divize - 1 minuta... Když minutová ručka ukazuje na 1, je to 5 minut, 2 až 10 minut, 3 až 15 minut atd., Dokud minutová ručka nedosáhne celého kruhu a nevrátí se na 12–60 minut:

Poďme sestavit tabulku hodin za den:

00:00

01:00 dop

02:00

03:00 dop

04:00 dop

05:00 dop

06:00

07:00

08:00 dop

09:00 dop

10:00 RÁNO

11:00 DOPOLEDNE

12:00

13:00 odp

14:00 odp

15:00

16:00

Elektronické hodinky s širokou škálou funkčních schopností jsou jedním z nejpoužívanějších elektronických zařízení v každodenním životě, jejichž ovládání je založeno na modelu s konečnou automatikou. Elektronické hodiny obvykle zobrazují čas, datum, umožňují nastavit čas a datum a také vykonávají mnoho dalších funkcí (například je lze změnit na stopky s resetem a zastavením jejich odečtu, budík atd. ). Všechny tyto funkce jsou řízeny vestavěným konečným automatickým převodníkem, jehož vstupy jsou události stisknutí externích ovládacích tlačítek. Blokové schéma elektronických hodin je znázorněno na obr. 3.11. Ovládací tlačítka jsou zde označena „a“ a „b“. Kromě zobrazovacího zařízení, které osvětluje číslice, a zobrazovacího obvodu, který převádí binární desetinná čísla čísel do sedmimístného kontrolního kódu LED, ukazuje diagram čtyři zobrazovací registry, ve kterých jsou uloženy binární desetinná čísla se čtyřmi číslicemi, které jsou aktuálně zobrazeny na číselníku pomocí obvodu a zařízení zobrazuje kombinační obvody „NEBO“, které předávají některý z povolených kódů do registrů displeje, sběrnici „Control“, která v každé situaci umožňuje výstup do registrů displeje pouze signálů buď stopek, hodin nebo data. Obvod také obsahuje registry stopek a generátor ticků, který vydává signál s frekvencí 1 Hz. Obrázek ukazuje okamžik „19. června, 15 hodin 04 minut, 43 sekund“.

Obrázek 3.11. Blokové schéma elektronických hodin

Řídicí zařízení, které organizuje činnost všech prvků elektronických hodin, je postaveno na základě modelu stavového stroje. Graf přechodu tohoto automatu je uveden na obr. 3.12. Počáteční stav zobrazuje čas. To znamená, že binární kód tohoto stavu (po dešifrování) otevírá výstupy čtyř binárních desítkových registrů ukládajících jednotky a desítky minut a jednotky a desítky hodin na vstupy čtyř kombinačních OR obvodů.

Obrázek 3.12. Automatické elektronické ovládání hodin

Stavový automat reaguje na událost stisknutí tlačítka „a“ na pouzdru hodinek přepnutím do stavu “ Nastavení minut”, Ve kterém událost stisknutí tlačítka“ b ”způsobí zvýšení počtu uložených v registrech vyhrazených na minuty. V tomto případě jsou blokovány přenosy z registru sekund a do registru přiděleného pro uložení čísla. Událost stisknutí tlačítka „b“ ve stavu „ Const. měsíce„Zvýší počet uložený v registrech vyhrazených pro daný měsíc. Na obr. 3.12 neukazuje možnost a algoritmus práce se stopkami.

Toto odvětví vyrábí mnoho typů elektronických hodinek s různými funkcemi. Schémata řízení pro takové hodiny lze sestavit s dovedností implementace konečných funkčních převodníků a vytváření konečně automatických modelů diskrétních řídicích systémů.

Pravděpodobně žádné jiné zařízení není tak citlivé na všechny druhy změn a neobvyklých inkarnací jako běžné hodinky. Počínaje solárním a konče atomovým - a existuje mezi nimi tolik různých variací ... Pravidelně předkládáme obzvláště zajímavá schémata a návrhy ze zahraničních zdrojů a tentokrát vám představíme další zařízení pro zobrazování aktuálního času, kterým je nejen ve starém indikátoru domácího vakua, ale také pouze v jedné číslici.

Jednociferný hodinový obvod

Tyto hodiny používají mikrokontrolér PIC16F84A. Obvod je poměrně jednoduchý, protože používá jednu LED řízenou tranzistory a nepotřebuje příliš výkonný měnič výkonu.

Použitá lampa je sovětská IN-12A. Zdroj vysokého napětí pochází z komponentů levného digitálního fotoaparátu (nefunguje), takže stojí téměř nic.

Hodiny zobrazují čas takovým způsobem, že se číslice indikátoru pravidelně mění z desítek hodin na minuty. Pak na pár sekund zhasnou. Například ukázat čas 12:45 , nejprve se na chvíli rozsvítí 1 , pak 2 , pak 4 , pak 5 ... A pauza na pár sekund.

Chcete-li nastavit čas, musíte stisknout tlačítko a poté se číslo, které chcete změnit, zvýší při každém stisknutí atd. V kruhu od 0 do 9.

Hlavní deska obsahuje všechny komponenty kromě modulu pro převod vysokého napětí. Všechny soubory desek, firmwaru atd. Jsou umístěny v obecném archivu. Součásti potřebné pro obvod:

  • Indikátor IN-12
  • MK PIC16F84A
  • 10x vysokonapěťové tranzistory SMD MMBTA42
  • 13x rezistory 0805
  • Křemen 4 MHz
  • 2x 22pF kondenzátory
  • Knoflík

Vysokonapěťový převodník, jak je uvedeno výše, využívá komponenty extrahované z blesku fotoaparátu - transformátor, dioda a výstupní kondenzátor.

Pokud se rozhodnete tyto hodinky sestavit, nezapomeňte, že používají vysoké napětí - až 400 V. Při montáži a provozu buďte opatrní!

K naprogramování kódu do PIC potřebujete programátor a software. Zde byl použit čínský programátor k150. Je nutné načíst soubor .hex do programu a vypálit MK čip.