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..
Visual Basiciin apuja...
Jeppe
9563
0Äänestä
Muut lukivat myös
Odottaa vastausta
Näihin keskusteluihin ei ole vielä vastattu. Ole ensimmäinen.
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.
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 ?
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
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?
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
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