[ Suvajac @ 08.09.2011. 13:08 ] @
Zadatak glasi:

Npaisati program koji u izlaznu datoteku upisuje tačno vrijeme u satima, minutama i sekundama svaki put kada se kazaljke na satu poklope u intervalu od 00:00h do 12:00h. Kazaljke se poklapaju svakih 1h 5min i 27s (za dvanaest sati poklope se 11 puta).

Interesuje me na koji način se rješava ovaj zadatak?
[ Anestetik @ 09.09.2011. 17:52 ] @
Tako sto sednes i sve to sto si ispricao ukucas u VB .

Bilo bi dobro da sam nesto pocnes raditi pa nam se javis kad negdje zapnes, a ovako tesko da ce ti ko pomoci!

Pozdrav!
[ BSE @ 07.10.2011. 21:39 ] @
Pozdrav!
Pokusavao sam rijesiti ovaj zadatak i zapeo sam, pa bih molio za pomoc ako neko zna i ima volje da mi pomogne. Naime, odradio sam dio zadatka u kojem sam odredio intervale preklapanja kazaljki i program ih uredno ispisuje. Problem je samo kako to formatirati/konvertovati u format nalik na vrijeme? Na prijedlog jednog kolege pokusao sam preko CDate, ali mi ta metoda konvertuje moje intervale formate sa danima, mjesecima i godinama, pa tek onda u sate, minute, sekunde - sto je komicno kad se procitaju konverzije (od 31.12.1899 do 11.1.1900 :D)
postoji li nacin da se preko CDate ogranici samo na sate, minute, sekunde i desetinke/stotinke? Ili da mi neko pomogne na koji nacin da intervale koji su Double formatiram u vremenski oblik? Mozda moze i konverzija u String ili Integer, vazno je samo da prikaze na nacin kao da je u pitanju sat tj. vremenski oblik, samo sto sam ja noobara za programiranje, pa ne znam kako :)
Moze li pomoc?
[ FOX028 @ 07.10.2011. 23:51 ] @
Daj okaci to sto si ti radio pa da vidimo sta se moze uraditi
[ BSE @ 08.10.2011. 00:16 ] @
Code:
Public Class Form1

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click


        Dim interval, vrijeme As Double
        Dim brojac As Integer

        interval = 12.0 / 11.0
        For brojac = 1 To 11
            vrijeme = interval * brojac

            lstData.Items.Add(vrijeme)

        Next

    End Sub
End Class


Evo koda, dalje ne znam gdje da se okrenem :)
Nadam se da, nakon sto obrisete suze od smijanja, ce mi neko moci pomoci :)
Nasao sam na netu jos jedan prijedlog, a to je da se Double pretvori prvo u sekunde, a tek onda u vrijeme - ali ni to mi nije poslo za rukom da odradim. Citam jos prijedloge na MSDN-u, mozda nesto i iskopam, a mozda mi jednostavno treba pogled iz drugog ugla.
Pozdrav!
[ FOX028 @ 08.10.2011. 00:51 ] @
evo odradio sam ti nesto na brzaka, radio sam u VB6 ali imas i kod u Notpedu. Nadam se da sam ti pomogao.
[ BSE @ 08.10.2011. 09:19 ] @
hm i da i ne, da budem iskren
dao si mi ideju sta da probam da iskombinujem
a razlog zasto mi tvoje ponudjeno rjesenje ne odgovara je zbog zadatog intervala, a meni treba da se u kodu vidi kako sam dosao do tog intervala i da mi ga konvertuje u format nalik na vrijeme
hvala ti u svakom slucaju

ps. da li ovaj podforum pokriva samo VB 6 ili pokriva i VB.NET, posto je meni VB.NET potreban, a ne VB 6?
Koliko mi se cini, moracu da pokrenem temu na drugom podforumu
[ Suvajac @ 08.10.2011. 09:48 ] @
Ja sam uradio ovako

Code:
Public Class Form1

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim h, m, s As Decimal
        Dim i As Integer
        h = 0
        m = 0
        s = 0

        For i = 1 To 11
            h = h + 1
            m = m + 5
            If m > 60 Then
                h = h + 1
                m = m - 60
            End If
            s = s + 24
            If s > 60 Then
                m = m + 1
                s = s - 60
            End If
            ListBox1.Items.Add(Str(h) & ":" & Str(m) & ":" & Str(s))
        Next i
    End Sub

End Class
[ FOX028 @ 08.10.2011. 17:17 ] @
pa dobro mozes iskoristiti ovo, samo dodaj ovo u tvoj kod gde imas kako si dosao do intervala, i na kraju u ovom mom kodu tu vrednost dodelis promenljivoj Interval i to bi trebalo da je to to. Pa mislim da pokriva ali ja radim u VB6 i VB 2005, u VB.Net nisam nikad radio ali mislim da je slican mozda ces morati male izmene da odradis.
[ BSE @ 09.10.2011. 01:25 ] @
@FOX, druze, hvala ti, pomogao si mi. Uspio sam da izadjem iz beskonacne petlje :)
Zadatak sam rjesio, sad samo jos razmisljam kako da ga usminkam (da za brojeve manje od 10 dodaje 0 ispred) i kako da mi rezultat ispise u neki txt fajl. Al` ako sam uspio prokljuviti ove zezancije, valjda cu i to :)
Jos jednom hvala.
[ FOX028 @ 09.10.2011. 08:27 ] @
Ako negde opet zapnes tu smo da pomognemo, a za taj ispis u txt fajlu ja sam u VB6 koristio ovo:

Code:
Open "c:\My Documents\sample.txt" For Output As #1 
   intMsg = MsgBox("File sample.txt opened") 
   StudentName = InputBox("Enter the student Name") 
   Print #1, StudentName 
   intMsg = MsgBox("Writing a" & StudentName & " to sample.txt ")
Close #1 

[ BSE @ 09.10.2011. 16:10 ] @
Malo bolje sam pogledao rezultat i nasao sam gresku prilikom konverzije.
Code:
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 Long
            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


Dakle, negdje sam pogrijesio u konverziji, pa ako neko moze da me uputi da ispravim
[ FOX028 @ 09.10.2011. 19:12 ] @
tebi je promenljiva interval decimalan broj uvek jer delis 12 sa 11 pa je i promenljiva poklapanje decimalan broj osim kada je brojac=11. Ne razumem samo zasto delis 12 sa 11.
[ BSE @ 09.10.2011. 20:00 ] @
zato sto je 11 poklapanja kazaljki za 12 sati
pokusao sam na drugi nacin da rijesim zadatak, ali mi opet prebaci da je sesti sati u stvari sedmi :(
[ FOX028 @ 09.10.2011. 21:23 ] @
Mislim da ti je to pogresno kako si zamislio, time sto podelis 12 sa 11 neces dobiti interval za koji se kazaljke poklope. Jesi li razmisljao da izracunas za koji se ugao pomere kazaljke u toku jedne sekunde pa onda koliko im sekundi treba dok se nadju pod istim uglom u odnosu na 12 (onde gde je 12 da ti bude nulti stepen). To je moje neko razmisljanje.
[ BSE @ 10.10.2011. 18:18 ] @
nije pogresno, interval jeste 12/11 (odnosno 1,0909090) i treba ga samo konvertovati da izgleda kao vremenski oblik
btw rijesio sam zadatak sa malo manje komplikovanja i primjenio mali trik: kad sam radio konverziju intervala za sate uzeo sam operator \ za dijeljenje i time sam rijesio problem sa zaokruzivanjem vrijednosti.