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 :>
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.
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
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.
Mitä kaikkea ohjelman täytyy tehdä? Muuttaa murtoluku mahdollisimman yksinkertaiseen muotoon? Esittää murtoluku sekalukuna? Muuttaa desimaaliluku murtoluvuksi? Käsitellä murtolukuja laskutoimituksissa?
Miellään vain juuri se että saat valita näyttääkö laskin tuloksen murto- vai desimaalilukuna. Ja murtoluku mahdollisimman yksinkertaiseen muotoon , ei sekalukuja.
Aihe on jo aika vanha, joten et voi enää vastata siihen.