Visual Basiciin apuja...

Apuja ongelmaan. Miten Visual Basic ohjelmointi kielellä tehdään sellainen ohjelma. Kuinka monesti jotkut luvut ovat toistensa kanssa esiintyneet. Esimerkiksi kuinka monesti 1,2,3,4,5 ovat esiintyneet toistensa kanssa jollakin tietyllä ajanjaksolla. Lukuja verrataan teksti tiedostosta ja esiintymiskertojen tulos tulostetaan näytölle. Apuja..
9563
Äänestä

Muut lukivat myös

Vastaukset 9

Vanhimmat

...kuvaamaan tuo ohjelmointiongelma (yhdyssana) siten, että siitä saa selvää.

- Onko lukujoukko tiedostossa samalla rivillä
- Mikäli on miten ne on erotettu toisistaan
- Miten aika liittyi tehtävään, onko joukolla lukuja jokin aikaleima tiedostossa.

Ohjelmointiongelmana tuo lienee suoraviivainen, käyt lukujoukot läpi ja lasket esiintymiskertoja.

Äänestä
  • Tarkoitan sitä että miten sellanen ohjelma tehdään, jossa verrataan kuinka monesti jotkut esim. kaksi numeroa on ilmestyneet esim. vuoden aikana. Verrattava tiedosto on tekstitiedostona. numero muoto tiedostossa 020522113344

    Äänestä

  • Jeppe kirjoitti:

    Tarkoitan sitä että miten sellanen ohjelma tehdään, jossa verrataan kuinka monesti jotkut esim. kaksi numeroa on ilmestyneet esim. vuoden aikana. Verrattava tiedosto on tekstitiedostona. numero muoto tiedostossa 020522113344

    Tarkoitatko tuota "numeroa" 020522113344 siis kokonaisuutena eli puhuttaisiinkin lukuna tai merkkijonona "020522113344", että kuinka usein tämä esiintyy?

    Ja tiedostossa tuollaisia lukuja olisi riveillä, esimerkiksi näin:
    0345673890
    22323860
    020522113344
    6718216389
    546828273
    020522113344

    niin tuosta ohjelma löytäisi esimerkiksi tuon mainitsemasi luvun 020522113344 2 kertaa.

    Tätäkö tarkoitat?

    Vai tarkoitako, että kuinka monesti esim. luku 2 esiintyy numerosarjassa 020522113344 ?

    Äänestä

  • vbguru kirjoitti:

    Tarkoitatko tuota "numeroa" 020522113344 siis kokonaisuutena eli puhuttaisiinkin lukuna tai merkkijonona "020522113344", että kuinka usein tämä esiintyy?

    Ja tiedostossa tuollaisia lukuja olisi riveillä, esimerkiksi näin:
    0345673890
    22323860
    020522113344
    6718216389
    546828273
    020522113344

    niin tuosta ohjelma löytäisi esimerkiksi tuon mainitsemasi luvun 020522113344 2 kertaa.

    Tätäkö tarkoitat?

    Vai tarkoitako, että kuinka monesti esim. luku 2 esiintyy numerosarjassa 020522113344 ?

    tarkoitan kuinka monesti esim. luvut 02 05 esiintyvät haettavassa tiedostossa

    Äänestä

  • Jeppe kirjoitti:

    tarkoitan kuinka monesti esim. luvut 02 05 esiintyvät haettavassa tiedostossa

    Tee kokeeksi tiedosto, jossa on rivit:
    020522113344
    582323232
    056472908509
    020522113344
    6373839339
    7550263763489
    020522113344

    tallenna nimellä "lukuja.txt"

    Kopio tästä kaikki VB:iin:

    'luku (rivi) määriteltävä merkkijonoksi, muuten alussa olevat nollat katoaa
    Dim rivi As String
    Dim haku As String
    Dim laskuri As Integer

    Private Sub Command1_Click()
    'luku on rivi mikä luetaan tiedostosta
    'haku on haettava luku/merkkijono'
    haku = "02"

    'hakutulosten laskuri
    laskuri = 0

    'huom! polku tarvittaessa esim. "C:\lukuja.txt"
    Open "lukuja.txt" For Input As #1

    Do While Not EOF(1)

    Input #1, rivi

    'kasvatetaan laskuria jos haku löytyy rivi:sta
    If InStr(1, rivi, haku, 0) > 0 Then laskuri = laskuri 1

    Loop

    Close #1

    Print "Numerosarja " & haku & " esiintyi " & laskuri & " kertaa"

    End Sub

    Äänestä

  • vbguru kirjoitti:

    Tee kokeeksi tiedosto, jossa on rivit:
    020522113344
    582323232
    056472908509
    020522113344
    6373839339
    7550263763489
    020522113344

    tallenna nimellä "lukuja.txt"

    Kopio tästä kaikki VB:iin:

    'luku (rivi) määriteltävä merkkijonoksi, muuten alussa olevat nollat katoaa
    Dim rivi As String
    Dim haku As String
    Dim laskuri As Integer

    Private Sub Command1_Click()
    'luku on rivi mikä luetaan tiedostosta
    'haku on haettava luku/merkkijono'
    haku = "02"

    'hakutulosten laskuri
    laskuri = 0

    'huom! polku tarvittaessa esim. "C:\lukuja.txt"
    Open "lukuja.txt" For Input As #1

    Do While Not EOF(1)

    Input #1, rivi

    'kasvatetaan laskuria jos haku löytyy rivi:sta
    If InStr(1, rivi, haku, 0) > 0 Then laskuri = laskuri 1

    Loop

    Close #1

    Print "Numerosarja " & haku & " esiintyi " & laskuri & " kertaa"

    End Sub

    siis, jos rivi on vaikka 024560273 ja haku on "02", niin tulokseksi saadaan 1 kpl vaikka tuo "02" esiintyykin rivillä toistamiseen.

    Mutta jos tuo "02" esiintyy muillakin riveillä, ne lasketaan.

    Onko oikein vai väärin?

    Äänestä

  • vbguru kirjoitti:

    Tee kokeeksi tiedosto, jossa on rivit:
    020522113344
    582323232
    056472908509
    020522113344
    6373839339
    7550263763489
    020522113344

    tallenna nimellä "lukuja.txt"

    Kopio tästä kaikki VB:iin:

    'luku (rivi) määriteltävä merkkijonoksi, muuten alussa olevat nollat katoaa
    Dim rivi As String
    Dim haku As String
    Dim laskuri As Integer

    Private Sub Command1_Click()
    'luku on rivi mikä luetaan tiedostosta
    'haku on haettava luku/merkkijono'
    haku = "02"

    'hakutulosten laskuri
    laskuri = 0

    'huom! polku tarvittaessa esim. "C:\lukuja.txt"
    Open "lukuja.txt" For Input As #1

    Do While Not EOF(1)

    Input #1, rivi

    'kasvatetaan laskuria jos haku löytyy rivi:sta
    If InStr(1, rivi, haku, 0) > 0 Then laskuri = laskuri 1

    Loop

    Close #1

    Print "Numerosarja " & haku & " esiintyi " & laskuri & " kertaa"

    End Sub

    Näin saat laskettua samalla kertaa useampien lukujen esiintymistä. Haettavat luvut luettelet vaan tiedostossa "haettavat.txt", esim.
    02
    05
    10
    113

    Tässä koko koodi uudestaan.

    'luku (rivi) määriteltävä merkkijonoksi, muuten alussa olevat nollat katoaa
    Dim rivi As String
    Dim x, kpl As Integer
    Dim haku() As String
    Dim laskuri() As Integer


    Private Sub Command1_Click()
    'luku on rivi mikä luetaan tiedostosta
    'haku(x) on haettava luku/merkkijono'

    'hakutulosten laskurit
    For x = 1 To kpl
    laskuri(x) = 0
    Next x

    'huom! polku tarvittaessa esim. "C:\lukuja.txt"
    Open "lukuja.txt" For Input As #1

    Do While Not EOF(1)

    Input #1, rivi

    For x = 1 To kpl
    'kasvatetaan laskuria jos haku löytyy rivi:sta
    If InStr(1, rivi, haku(x), 0) > 0 Then laskuri(x) = laskuri(x) 1
    Next x

    Loop

    Close #1

    For x = 1 To kpl
    Print "Numerosarja " & haku(x) & " esiintyi " & laskuri(x) & " kertaa"
    Next

    End Sub

    Private Sub Form_Load()
    'luetaan haettavat muuttujiin haku(x)
    'huom! polku tarvittaessa esim. "C:\haettavat.txt"
    Open "haettavat.txt" For Input As #1

    Do While Not EOF(1)
    x = x 1
    ReDim haku(x)

    Input #1, haku(x)

    Loop

    Close #1
    'kuinka monta haettavaa oli tiedostossa (kpl)
    kpl = x

    ReDim laskuri(kpl)

    End Sub

    Äänestä

  • vbguru kirjoitti:

    Näin saat laskettua samalla kertaa useampien lukujen esiintymistä. Haettavat luvut luettelet vaan tiedostossa "haettavat.txt", esim.
    02
    05
    10
    113

    Tässä koko koodi uudestaan.

    'luku (rivi) määriteltävä merkkijonoksi, muuten alussa olevat nollat katoaa
    Dim rivi As String
    Dim x, kpl As Integer
    Dim haku() As String
    Dim laskuri() As Integer


    Private Sub Command1_Click()
    'luku on rivi mikä luetaan tiedostosta
    'haku(x) on haettava luku/merkkijono'

    'hakutulosten laskurit
    For x = 1 To kpl
    laskuri(x) = 0
    Next x

    'huom! polku tarvittaessa esim. "C:\lukuja.txt"
    Open "lukuja.txt" For Input As #1

    Do While Not EOF(1)

    Input #1, rivi

    For x = 1 To kpl
    'kasvatetaan laskuria jos haku löytyy rivi:sta
    If InStr(1, rivi, haku(x), 0) > 0 Then laskuri(x) = laskuri(x) 1
    Next x

    Loop

    Close #1

    For x = 1 To kpl
    Print "Numerosarja " & haku(x) & " esiintyi " & laskuri(x) & " kertaa"
    Next

    End Sub

    Private Sub Form_Load()
    'luetaan haettavat muuttujiin haku(x)
    'huom! polku tarvittaessa esim. "C:\haettavat.txt"
    Open "haettavat.txt" For Input As #1

    Do While Not EOF(1)
    x = x 1
    ReDim haku(x)

    Input #1, haku(x)

    Loop

    Close #1
    'kuinka monta haettavaa oli tiedostossa (kpl)
    kpl = x

    ReDim laskuri(kpl)

    End Sub

    Redim ei oikein toiminut tuossa kuten piti, siksi kiinteät arvot noille haku() ja laskuri() muuttujille. Laita tarpeeksi suureksi, eli niin suureksi kuin haettavia on.


    'luku (rivi) määriteltävä merkkijonoksi, muuten alussa olevat nollat katoaa
    Dim rivi As String
    Dim x, kpl As Integer
    Dim haku(50) As String
    Dim laskuri(50) As Integer


    Private Sub Command1_Click()
    'luku on rivi mikä luetaan tiedostosta
    'haku(x) on haettava luku/merkkijono'

    'hakutulosten laskurit
    For x = 1 To kpl
    laskuri(x) = 0
    Next x

    'huom! polku tarvittaessa esim. "C:\lukuja.txt"
    Open "lukuja.txt" For Input As #1

    Do While Not EOF(1)

    Input #1, rivi

    For x = 1 To kpl
    'kasvatetaan laskuria jos haku löytyy rivi:sta
    If InStr(1, rivi, haku(x), 0) > 0 Then laskuri(x) = laskuri(x) 1
    Next x

    Loop

    Close #1

    For x = 1 To kpl
    Print "Numerosarja " & haku(x) & " esiintyi " & laskuri(x) & " kertaa"
    Next x

    End Sub

    Private Sub Form_Load()
    'luetaan haettavat muuttujiin haku(x)
    'huom! polku tarvittaessa esim. "C:\haettavat.txt"
    Open "haettavat.txt" For Input As #1

    Do While Not EOF(1)
    x = x 1

    Input #1, haku(x)

    Loop

    Close #1
    'kuinka monta haettavaa oli tiedostossa (kpl)
    kpl = x


    End Sub

    Äänestä

  • vbguru kirjoitti:

    Redim ei oikein toiminut tuossa kuten piti, siksi kiinteät arvot noille haku() ja laskuri() muuttujille. Laita tarpeeksi suureksi, eli niin suureksi kuin haettavia on.


    'luku (rivi) määriteltävä merkkijonoksi, muuten alussa olevat nollat katoaa
    Dim rivi As String
    Dim x, kpl As Integer
    Dim haku(50) As String
    Dim laskuri(50) As Integer


    Private Sub Command1_Click()
    'luku on rivi mikä luetaan tiedostosta
    'haku(x) on haettava luku/merkkijono'

    'hakutulosten laskurit
    For x = 1 To kpl
    laskuri(x) = 0
    Next x

    'huom! polku tarvittaessa esim. "C:\lukuja.txt"
    Open "lukuja.txt" For Input As #1

    Do While Not EOF(1)

    Input #1, rivi

    For x = 1 To kpl
    'kasvatetaan laskuria jos haku löytyy rivi:sta
    If InStr(1, rivi, haku(x), 0) > 0 Then laskuri(x) = laskuri(x) 1
    Next x

    Loop

    Close #1

    For x = 1 To kpl
    Print "Numerosarja " & haku(x) & " esiintyi " & laskuri(x) & " kertaa"
    Next x

    End Sub

    Private Sub Form_Load()
    'luetaan haettavat muuttujiin haku(x)
    'huom! polku tarvittaessa esim. "C:\haettavat.txt"
    Open "haettavat.txt" For Input As #1

    Do While Not EOF(1)
    x = x 1

    Input #1, haku(x)

    Loop

    Close #1
    'kuinka monta haettavaa oli tiedostossa (kpl)
    kpl = x


    End Sub

    Tuohon pitäisi vielä saada lisäyksenä semmonen kohta, että siihen saisi syöttää itse halutun 2-5 numerosarjaa. Esim. 01,02 tai 12,01,23,24,25 esim. nämä luvut pitäisi löytää siitä tekstitiedostosta. Apuva

    Äänestä

Kommentoi aloitusta


Jeppe kirjoitti:

Apuja ongelmaan. Miten Visual Basic ohjelmointi kielellä tehdään sellainen ohjelma. Kuinka monesti jotkut luvut ovat toistensa kanssa esiintyneet. Esimerkiksi kuinka monesti 1,2,3,4,5 ovat esiintyneet toistensa kanssa jollakin tietyllä ajanjaksolla. Lukuja verrataan teksti tiedostosta ja esiintymiskertojen tulos tulostetaan näytölle. Apuja..

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu