banjalukaforum.com https://banjalukaforum.com/ |
|
VB.NET zadatak - pomoc pozeljna :) https://banjalukaforum.com/viewtopic.php?f=18&t=57981 |
Stranica 1 od 3 |
Autoru: | BSE [ 09 Okt 2011, 15:07 ] |
Tema posta: | VB.NET zadatak - pomoc pozeljna :) |
Treba mi pomoc oko zadatka koji treba da mi izracuna poklapanje kazaljki unutar 12 sati. Mislio sam da sam ga odradio, ali vidim da ima problema sa racunanjem ili tacnije sa konverzijom, pa bi mi trebala pomoc ili prijedlog kako da to rijesim na drugaciji nacin. Kod: Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim interval, poklapanje As Double Dim brojac As Integer interval = 12.0 / 11.0 For brojac = 1 To 11 poklapanje = interval * brojac Dim h, m, s, st As Integer h = poklapanje m = (poklapanje * 60) Mod 60 s = (poklapanje * 3600) Mod 60 st = (poklapanje * 360000) Mod 100 lstData.Items.Add(Str(h) & ":" & Str(m) & ":" & Str(s) & ":" & Str(st)) Next End Sub End Class |
Autoru: | AlexM [ 09 Okt 2011, 16:31 ] |
Tema posta: | Re: VB.NET zadatak - pomoc pozeljna :) |
Ne znam kako tacno glasi zadatak evo ja sam nesto napravio ali u Javi. Moja logika ide ovako: Na mjestima gdje se kazeljke poklapaju: 0:00:00 1:05:05 2:11:11 3:16:16 4:22:22 5:27:27 6:32:32 7:38:38 8:43:43 9:49:49 10:54:54 -----------Ovo sam dobio mjerenjem na satu ![]() Kad se pogleda bolje uvidi se niz. 0:00:00 --------+5 min 1:05:05 --------+6 min 2:11:11 --------+5 min 3:16:16 --------+6 min 4:22:22 --------+5 min 5:27:27 --------+6 min 6:32:32 --------+5 min 7:38:38 --------+6 min 8:43:43 --------+5 min 9:49:49 --------+6 min 10:54:54 --------+5 min 11:59:59~0:00:00 Pa moj algoritam ide ovako. ![]() Kod: public class poklapanje {
private int h,m,s; public poklapanje(int hh, int mm, int ss){ h= konvert(hh); m=mm; s=ss; daLiSuPoklopljene(); } public int konvert(int hh){ if (hh>12){ return hh%12; } return hh; } public void daLiSuPoklopljene(){ int br=0; for(int i=0; i<h;i++){ if(i%2==0){ br+=5; } else{ br+=6; } } if (br == m && br==s) System.out.print("Kazeljke su se poklopile"); } public static void main(String[] args) { poklapanje a = new poklapanje(0,0,0); } } |
Autoru: | Panzer [ 09 Okt 2011, 16:39 ] |
Tema posta: | Re: VB.NET zadatak - pomoc pozeljna :) |
AlexM je napisao: Ne znam kako tacno glasi zadatak evo ja sam nesto napravio ali u Javi. Moja logika ide ovako: Na mjestima gdje se kazeljke poklapaju: 0:00:00 1:05:05 2:11:11 3:16:16 4:22:22 5:27:27 6:32:32 7:38:38 8:43:43 9:49:49 10:54:54 -----------Ovo sam dobio mjerenjem na satu ![]() Ako hoćeš baš tačna vremena poklapanja kazalji iskoristi čistu fiziku. Nekidan sam se malo igrao sa ovim, u fizici, ne u programiranju i dobio da je vrijeme prvog poklapanja 01:05:20 illi koji sekund manje, ne sjećam se tačno. |
Autoru: | AlexM [ 09 Okt 2011, 16:43 ] |
Tema posta: | Re: VB.NET zadatak - pomoc pozeljna :) |
Po kojoj formuli se dobijaju poklapanja? Ne znam fiziku pa bi mozda kolegi forumasu dobro doslo a i ja da naucim nesto novo ![]() |
Autoru: | danijell [ 09 Okt 2011, 16:43 ] |
Tema posta: | Re: VB.NET zadatak - pomoc pozeljna :) |
Prvo poklapanje je u 00:00:00 ![]() |
Autoru: | BSE [ 09 Okt 2011, 16:46 ] |
Tema posta: | Re: VB.NET zadatak - pomoc pozeljna :) |
prvo poklapanje bi trebalo biti 1:05:27:27 (0:0:0:0 je pocetno stanje, pa ne moze da se racuna kao 1. polapanje) s obzirom da u toku 12 sati ima 11 poklapanja, interval se dobijal prostim dijeljenjem 12/11 cime se dobije 1.0909090... Problem mi je samo u konverziji toga u format koji bi licio na vrijeme. |
Autoru: | Panzer [ 09 Okt 2011, 16:54 ] |
Tema posta: | Re: VB.NET zadatak - pomoc pozeljna :) |
AlexM je napisao: Po kojoj formuli se dobijaju poklapanja? Ne znam fiziku pa bi mozda kolegi forumasu dobro doslo a i ja da naucim nesto novo ![]() Uzmeš ugaonu brzinu satne kazalje u 12 sati, brzina je 2*pi/12h i brzinu minutne, 2*pi/1h. Iskoristiš formulu x=x0+v0*t+1/2*a*t^2 za obe kazaljke, sa tim da će minutna preći još jedna puni krug, znači formula za minutnu je x=x0+v0*t+1/2*a*t^2+2*pi, izjednačiš obe formule i nađeš vrijeme potrebno da se poklope, t. Ubrzanja nema, x0 i drugo x0 su 0. Valjda je jasno, nemam naviku da pišem matematiku i fiziku po forumima... ![]() |
Autoru: | AlexM [ 09 Okt 2011, 17:00 ] |
Tema posta: | Re: VB.NET zadatak - pomoc pozeljna :) |
Aha. Pa onda ti je priblizno poklapanje u intervalu svakih 3927.27 sekundi. ![]() |
Autoru: | BSE [ 09 Okt 2011, 17:03 ] |
Tema posta: | Re: VB.NET zadatak - pomoc pozeljna :) |
AlexM je napisao: Aha. Pa onda ti je priblizno poklapanje u intervalu svakih 3927.27 sekundi. ![]() hajd` uslovno receno mogu i tako predstaviti, ali me konverzija zeza, jer kako sam kod postavio umjesto poklapanja u 6:xx:xx:xx, napise mi da je poklapanje u 7:xx:xx:xx ![]() |
Autoru: | danijell [ 09 Okt 2011, 17:09 ] |
Tema posta: | Re: VB.NET zadatak - pomoc pozeljna :) |
Možeš li ovakav algoritam u kod prebaciti. Na satu imaš 60 različitih pozicija koje mogu zauzeti kazaljke za sekundu, minutu i sat. Četiri promjenljive. b -brojač s - sekunde m - minute h - sati s inkrementiraš do 60, i kada dostigne tu vrijednost, inkrementiraš m, a s vraćaš na početak b stalno inkrementiraš sa s bez vraćanja na 0 petlju vrtiš dok m ne dostigne vrijednost 12 i tek tada inkrementiraš h naredni put h inkrementiraš za m = 24 .itd svakih +12 ispituješ da li su neke od vrijednosti s, m i h jednake. kada su jednake onda vriednost od b predstavlja predstavalj sekundu u kojoj se desilo poklapanje posmatranih kazaljki nije problem te sekunde pretvoriti u tačno vrijeme ![]() kada h dostigne 60 završavaš program Eto grubog opšteg rješenja iz glave za sva poklapanja kazaljki. ![]() |
Autoru: | Panzer [ 09 Okt 2011, 17:10 ] |
Tema posta: | Re: VB.NET zadatak - pomoc pozeljna :) |
AlexM je napisao: Aha. Pa onda ti je priblizno poklapanje u intervalu svakih 3927.27 sekundi. ![]() 3912 kod mene ali to je to. Ovim izračunavanjem dobiješ najpreciznije poklapanje samo što nemaš koristi od toga. BSE, jesi uračunao ti da minutara pređe krug više? Nešto mi smrdi da je to tvoj problem ako ti izbacuje sat više... |
Autoru: | BSE [ 09 Okt 2011, 17:15 ] |
Tema posta: | Re: VB.NET zadatak - pomoc pozeljna :) |
danijell je napisao: Možeš li ovakav algoritam u kod prebaciti. Na satu imaš 60 različitih pozicija koje mogu zauzeti kazaljke za sekundu, minutu i sat. Četiri promjenljive. b -brojač s - sekunde m - minute h - sati s inkrementiraš do 60, i kada dostigne tu vrijednost, inkrementiraš m, a s vraćaš na početak b stalno inkrementiraš sa s bez vraćanja na 0 petlju vrtiš dok m ne dostigne vrijednost 12 i tek tada inkrementiraš h naredni put h inkrementiraš za m = 24 .itd svakih +12 ispituješ da li su neke od vrijednosti s, m i h jednake. kada su jednake onda vriednost od b predstavlja predstavalj sekundu u kojoj se desilo poklapanje posmatranih kazaljki nije problem te sekunde pretvoriti u tačno vrijeme ![]() Eto grubog opšteg rješenja iz glave za sva poklapanja kazaljki. ![]() iskreno receno, malo si me bacio u konfuziju sa ovim ![]() Panzer je napisao: AlexM je napisao: Aha. Pa onda ti je priblizno poklapanje u intervalu svakih 3927.27 sekundi. ![]() 3912 kod mene ali to je to. Ovim izračunavanjem dobiješ najpreciznije poklapanje samo što nemaš koristi od toga. BSE, jesi uračunao ti da minutara pređe krug više? Nešto mi smrdi da je to tvoj problem ako ti izbacuje sat više... nisam uracunao, jer mi je rezultat sa pokretnim zarezom dobar, samo me kod konverzije zezne i izracuna pogresno |
Autoru: | danijell [ 09 Okt 2011, 17:28 ] |
Tema posta: | Re: VB.NET zadatak - pomoc pozeljna :) |
Ma razmišljaj asemblerski i diskretno, biće ti lakše ![]() Sve kazaljke mogu biti samo na 60 pozicija. Između dva sata ima pet pozicija za veliku kazaljku. 60/5 =12 znači svakih 12 minuta velika kazaljka mijenja poziciju itd ... ![]() |
Autoru: | Panzer [ 09 Okt 2011, 17:31 ] |
Tema posta: | Re: VB.NET zadatak - pomoc pozeljna :) |
danijell je napisao: znači svakih 12 minuta velika kazaljka mijenja poziciju itd ... ![]() Velika kazaljka bi trebalo da konstantno mijenja poziciju, ne možeš reći da je u jednom momentu negdje i hop, poslije 12 minuta prebaci se odjednom. EDIT: Ustvari, nemojte slušati mene, ja zadatak posmatram iz ugla fizike. Samo vi udrite gdje ste stali... |
Autoru: | AlexM [ 09 Okt 2011, 17:34 ] |
Tema posta: | Re: VB.NET zadatak - pomoc pozeljna :) |
Uzeo sam referencu od Panzer-a ipak mislim da je tacnija ![]() BSE mislim da ti treba samo ovo. Kod: public void poklapanje(){ int rez=0; for (int i=1; i<12;i++){ rez=3912*i; int h= rez/3600; int m= (rez%3600)/60; int s=((rez%3600)%60); System.out.print(h+":"+m+":"+s+"\n"); } } Napomena ovo je kod iz Jave. |
Autoru: | BSE [ 09 Okt 2011, 17:45 ] |
Tema posta: | Re: VB.NET zadatak - pomoc pozeljna :) |
danijell je napisao: Ma razmišljaj asemblerski i diskretno, biće ti lakše ![]() Sve kazaljke mogu biti samo na 60 pozicija. Između dva sata ima pet pozicija za veliku kazaljku. 60/5 =12 znači svakih 12 minuta velika kazaljka mijenja poziciju itd ... ![]() uh samo da ti napomenem da sam zamrzio programiranje kad sam imao Fortran i ni profesor ni asistent nisu znali da mi objasne kako je moguce da je i = i + 1 (obicni brojac) kad to nema nikakve logike i nije matematicki ispravno (dobio sam odgovor "to je tako") sad mi tek neke stvari postaju jasnije, mada se jos uvijek lovim sa dosta stvari jer sam tek na samom pocetku generalno, moram profesoru da prikazem kako sam dosao do poklapanja kazaljki, a sam je naglasio da se kazaljke poklapaju 11 puta za 12 sati, pa sam krenuo tim putem, jer ne znam kako bih radio tvoj metod u kojem nema stotinki, a bez njih mislim da je na 12 sati gubitak oko 3 minute, sto nikako ne donosi tacan rezultat |
Autoru: | danijell [ 09 Okt 2011, 17:49 ] |
Tema posta: | Re: VB.NET zadatak - pomoc pozeljna :) |
Panzer je napisao: danijell je napisao: znači svakih 12 minuta velika kazaljka mijenja poziciju itd ... ![]() Velika kazaljka bi trebalo da konstantno mijenja poziciju, ne možeš reći da je u jednom momentu negdje i hop, poslije 12 minuta prebaci se odjednom. EDIT: Ustvari, nemojte slušati mene, ja zadatak posmatram iz ugla fizike. Samo vi udrite gdje ste stali... Pa iz ugla fizike i jeste tačno. Mogle bi se posmatrati sve kazaljke da se kreću kontinualno. Ali da bi izbjegao problem sa vrijednsotima koje nisu cijele vrijednosti sekunde odradiš diskretizaciju i to je to. ![]() Može se u moj algoritam ubaciti i stotinke i eto preciznosti reda stotinke. Ja jednostavno volim da zakomplikujem ![]() @BSE Dodavanjem stotinki samo dobijaš na preciznosti proračuna tačnog vremena, ali nećeš bez njih izgubiti minute. U krajnjoj poziciji imaš za s i m i h vrijednost 60. A b ima vrijednost 43200, što je tačno 12 sati. |
Autoru: | Hristov [ 09 Okt 2011, 18:01 ] |
Tema posta: | Re: VB.NET zadatak - pomoc pozeljna :) |
Mislim da je kljuc rijesenja je u poznavanju odnosa relativnih ugaonih brzina kazaljki. Npr. minutara ide 12x brže od satare ![]() |
Autoru: | AlexM [ 09 Okt 2011, 18:08 ] |
Tema posta: | Re: VB.NET zadatak - pomoc pozeljna :) |
Evo i sa stotinkama ![]() Kod: public void daLiSuPoklopljene(){ double rez; for (int i=1; i<12;i++){ rez=(12.0/11.0)*360000*i; h= (int)rez/360000; m= (int)(rez%360000)/6000; s=(int)((rez%360000)%6000)/100; ss=(int)((rez%360000)%6000)%100; System.out.print("Poklapanje "+i+" "+h+":"+m+":"+s+":"+ss+"---"+rez+"\n"); } } Dobijeni rezultat: Kod: Poklapanje 1 1:5:27:27
Poklapanje 2 2:10:54:54 Poklapanje 3 3:16:21:81 Poklapanje 4 4:21:49:9 Poklapanje 5 5:27:16:36 Poklapanje 6 6:32:43:63 Poklapanje 7 7:38:10:90 Poklapanje 8 8:43:38:18 Poklapanje 9 9:49:5:45 Poklapanje 10 10:54:32:72 Poklapanje 11 12:0:0:0 |
Autoru: | BSE [ 09 Okt 2011, 18:15 ] |
Tema posta: | Re: VB.NET zadatak - pomoc pozeljna :) |
auh trebace mi sad vremena da prvo sazmem sta mi pricate, a onda jos i da to pokusam pretociti u kod ![]() probacu ovo Alexovo ![]() hvala svima, puno ste mi pomogli |
Stranica 1 od 3 | Sva vremena su u UTC [ DST ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |