Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB6: Yksinkertainen laskin (VB)

Jph [02.06.2005 15:23:15]

#

Elikkäs , ensimmäistä kertaa itsenäisesti koodailen koulun atk-kurssin pohjalta Visual Basic 6:sella. Tarkoitus olisi tehdä tälläinen peruslaskin lopputyöksi. Laskimessa on kaksi textboxia johon syötetään luvut ja sitten painetaan nappia tyyliin "plus","minus","jako" jnejne. Ja kolmanteen textboxiin ilmestyy vastaus. Nyt haluisin saada ohjelmaan napin josta saa vaihdettua ilmestyykö vastaus murtolukuna vai desimaalilukuna, mutta ei ole hajuakaan kuinka tämä käytännössä toteutetaan :S
Ehdotuksia otetaan vastaan :>

Meitsi [02.06.2005 15:34:06]

#

Laitat boolean-tyyppisen muuttujan jossa pidät tietoa että kumpi tyyli on käytössä ja sitten if-lauseella tutkit muuttujan mukaan, pyöristetäänkö vai ei.

Jph [02.06.2005 15:57:07]

#

Olen luultavasti hieman hidas, mutta käytännön esimerkki olisi kiva ^__^ en nimittäin oikein tajunnut ideaa.
Pastesin fiksuna poikana alle vielä itse koodin joten muutkin ideat ovat tervetulleita.

'Määritetään käytettävät muuttujat
    Dim luku1 As Double 'luku1 on kokonaisluku
    Dim luku2 As Double 'luku2 on kokonaisluku
    Dim vastaus As Double 'vastaus on kokonaisluku
    Dim merkki As String 'merkki on merkkijono


Private Sub cmd_flat_Click()
luku1 = Text_luku1.Text
luku2 = Text_luku2.Text
vastaus = luku1 ^ luku2
lbl_merkki.Caption = "^"
Text_vastaus.Text = vastaus
End Sub

Private Sub cmd_jako_Click()
luku1 = Text_luku1.Text
luku2 = Text_luku2.Text
vastaus = luku1 / luku2
lbl_merkki.Caption = "/"
Text_vastaus.Text = vastaus
End Sub

Private Sub cmd_kerto_Click()
luku1 = Text_luku1.Text
luku2 = Text_luku2.Text
vastaus = luku1 * luku2
lbl_merkki.Caption = "*"
Text_vastaus.Text = vastaus

End Sub

Private Sub cmd_pii_Click()
Text_luku1.Text = "3,141592" 'lisää piin likiarvon textbox1

End Sub

Private Sub cmd_vähennys_Click()
luku1 = Text_luku1.Text
luku2 = Text_luku2.Text
vastaus = luku1 - luku2
lbl_merkki.Caption = "-"
Text_vastaus.Text = vastaus
End Sub

Private Sub cmd_yhteen_Click()
'Luetaan käyttäjän syötteet
luku1 = Text_luku1.Text 'luku1 saa arvokseen luku1 textboxin sisällön
luku2 = Text_luku2.Text
'lasketaan luvut yhteen
vastaus = luku1 + luku2
'Näytetään oikea merkki
lbl_merkki.Caption = "+"
'näytetään vastaus
Text_vastaus.Text = vastaus 'vastaus textboxin sisältö=vastauksen sisältö

End Sub

Private Sub mnu_about_Click()
MsgBox ("Laskin Versio 20.357 by *********"), vbInformation
End Sub

Private Sub mnu_tyhjennä_Click() 'tyhjentää textboxit
Text_luku1.Text = ""
Text_luku2.Text = ""
Text_vastaus.Text = ""

End Sub

Private Sub sulje_mnu_Click()
End
End Sub

Mod. Edit: Lisäsin kooditagit

peran [02.06.2005 17:28:14]

#

Jph kirjoitti:

Nyt haluisin saada ohjelmaan napin josta saa vaihdettua ilmestyykö vastaus murtolukuna vai desimaalilukuna, mutta ei ole hajuakaan kuinka tämä käytännössä toteutetaan :S
Ehdotuksia otetaan vastaan :>

Murtoluvut joudut koodaamaan, pala kerrallaan itse.

Eli jos käyttäjä esim. on laittanut 14/8:lla. Joudut ohjelmassa sieventämään tuloksen.
Eli aluksi ottaa kokonaislukuosat:

kokonaiset = Int(14/8)
MurtoOsa=14-kokonaiset*8
jakaja=8
' sitten sieventämisen joudut jotenkin tekemään
' Tässä kömpelöä ideaa.
i=MurtoOsa
Do While i > 1
    If (i/MurtoOsa=Int(i/MurtoOsa)) And (i/jakaja=Int(i/jakaja)) Then
        MurtoOsa=Int(i/MurtoOsa)
        jakaja=Int(i/jakaja)
    End If
    i = i - 1
Loop

Tästä sitten pitäisi tulla
kokonaiset=1
MurtoOsa=3
jakaja=4
Tämän voi sitten esittää:

Text_vastaus.Text= "" & kokonaiset & " " & MurtoOsa & "/" & jakaja

Tätä ideaa ei kannata suoraan käyttää, koska se on toivottoman hidas, mutta idea selvinneen.

Antti Laaksonen [02.06.2005 20:14:51]

#

Mitä kaikkea ohjelman täytyy tehdä? Muuttaa murtoluku mahdollisimman yksinkertaiseen muotoon? Esittää murtoluku sekalukuna? Muuttaa desimaaliluku murtoluvuksi? Käsitellä murtolukuja laskutoimituksissa?

Jph [03.06.2005 15:14:37]

#

Miellään vain juuri se että saat valita näyttääkö laskin tuloksen murto- vai desimaalilukuna. Ja murtoluku mahdollisimman yksinkertaiseen muotoon , ei sekalukuja.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta