Pystyisikö joku tarkka silmäinen löytämään missä on tekeleessäni vika. Itse en ole löytänyt vaikka käynyt useasti läpi.
Ohjelmana minulla pitää olla Visual Basic 2008 Express edition, enkä mitenkään hyvä ole ohjelmoimaan, joten jos joku osaisi neuvoa, neuvoisiko niiiin hel-pos-ti että tyhmäkin tajuaisi.
Tarkoituskenani ohjelmassa hakea tekstitiedosto, johon syötetty allekkain tämän tyyppisiä esim. 219A001214 tai 420L1887092. viimeinen numero on tarkiste jota ei lasketa. Samoin 4 ensimmäistä merkkiä ei lasketa, eli lasku alkaa vasta kirjaimen jälkeen. Alkuun olen saanut ohjelman tekemään niin, että ottaa huomioon vasta kirjaimen jälkeen tulevat merkit, mutta 0:lla kertomista en ole onnistunut estämään..
Laskun pitäisi olla: Kerroin on 2 1 2 1 2 1. Vasemmalta oikealle ja pitäisi vaihtua joka kierroksella, yhtä numeroa kerrallaan kertoen. Näiden kaikkien tulos jaetaan 10, jonka jakojäännös pitäisi olla tarkiste. Eli toisin sanoen, sen summan tuloksen viimeinen numero on tarkiste.
Kerrointa en siis saa vaihtumaan, siten että aloittaa kertomisen 2. osaisiko joku neuvoa mitä pitäisi tehdä.
Kiitokset etukäteen.
Option Strict On
Imports System.Console
Imports System.IO
Module Module1
Sub Main()
Const KORTINPITUUS1 As Integer = 10
'Const KORTINPITUUS2 As Integer = 11
Dim oLukija As StreamReader 'lukijan esittely
Dim oKirjoittaja As New StreamWriter("c:\Tarkastetut.txt")
Dim intLaskettuTm, intSyotettyTm As Integer
'Dim strViesti As String
Dim kortti As String '= "179A005644" testausmateriaalina tekstitiedostossa
WriteLine("tunnistus aloitetaan tekstitiedoston haulla.")
ReadLine()
oLukija = New StreamReader("c:\Haetut.txt") 'Oletetaan tiedoston löytyvän
While oLukija.Peek -1
kortti = oLukija.ReadLine()
intLaskettuTm = LaskeTarkastusmerkki(kortti)
intSyotettyTm = CInt(kortti.Substring(KORTINPITUUS1 - 1, 1))
if intSyotettyTm = intLaskettuTm Then
strViesti = String.Concat("kortti ", kortti, " on oikein.")
WriteLine(strViesti)
oKirjoittaja.WriteLine(strViesti)
'Else
strViesti = String.Concat("kortti ", kortti, " on virheellinen.")
WriteLine(strViesti)
End If
End While
oKirjoittaja.Close()
oLukija.Close()
End Sub
Function LaskeTarkastusmerkki(ByVal kortti As String) As Integer
Const KORTINPITUUS1 As Integer = 10
Dim intSumma, intTulo, intKerroin, i, intNumero, intLaskettuTM As Integer
Dim IntSyotettyTm As Integer
intSumma = 0
intKerroin = 2
For i = 4 To KORTINPITUUS1 - 2 ’aloittaa kirjaimen jälk. kertoo myös 0:lla
intNumero = CInt(kortti.Substring(i, 1))
intTulo = intNumero * intKerroin
intSumma = intSumma intTulo 'kokonaissummaa tarvitaan tarkastusmerkin päättelyssä
Select Case intKerroin ' vaihdetaan kerroin seuraavaa kierrosta varten
Case 1
intKerroin = 1
Case 2
intKerroin = 2
End Select
Next
intLaskettuTM = 10 - (intSumma Mod 10)
If intLaskettuTM = 10 Then 'muunnetaan tarkastusmerkki on yksinumeroiseksi
intLaskettuTM = 0
End If
IntSyotettyTm = CInt(kortti.Substring(KORTINPITUUS1 - 1, 1)) '
If IntSyotettyTm = intLaskettuTM Then
Console.WriteLine(String.Concat("kortti ", kortti, " on oikein."))
Else
Console.WriteLine(String.Concat("kortti ", kortti, " on virheellinen."))
End If
ReadLine()
End Function
End Module
Ohjelman teko apua?!!
Ihan aloittelija
1
963
Vastaukset
- ...
Select Case-rakenteessa intkerroin ei vaihdu, kun siihen sijoitetaan sama joka siinä jo on.
Ketjusta on poistettu 0 sääntöjenvastaista viestiä.
Luetuimmat keskustelut
Valtion alijäämä = yritystukien määrä = 10 mrd. euroa
Mutta persut eivät vaan suostu tasapainottamaan valtion budjettia, vaikka yritystuet on tiedetty haitallisiksi. Miksi p977393Suomi käyttää sosiaalietuuksiin suhteessa eniten rahaa koko maailmassa
Suomi käyttää sosiaaliturvaetuuksiin enemmän rahaa suhteessa bruttokansantuotteeseen kuin mikään muu maa maailmassa. Su3636483Grahn-Laasonen: "Kansalainen joutuu pettymään, jos demareita äänestää"
Ministeri viittaa tuoreeseen Helsingin Sanomien juttuun, jossa demarijohtajan keinoja Suomen suunnan muuttamiseksi esite613834Vähän fiksumpi Nimi kisa ? :=)
Kirjoita teidän etunimet allekkain. Jos nimissä on joku kirjain sama, poista se. Tee sama tarkistus kaikille kirjaimill293569Mikä on suurin luonne- eroavuus sinussa
Ja kaivatussasi? Vaikuttaako se huonoon vai hyvään suuntaan siinä, että teistä voisi tulla jotain?1922041Kenen haluaisit voittavan Amazing Racen: Tuomas ja Esko, Millu ja Karoliina vai Maria ja Vilma?
Amazing Race Suomi huipentuu lauantaina finaaliin. Jäljellä on kolme paria ja tiedossa on tehtäviä, jotka järkyttävät os181763- 611501
Gallup: Katsotko Salkkareita tai oletko katsonut?
Salatut elämät on suomalaisten suosikkisarja vuosikymmenestä toiseen. Salkkareiden parissa viettää aikaa sukupolvet laps181476Elämäni biisi starttaa uudessa muodossa - Voi olla pettymys faneille!
Elämäni biisi ja juontaja Katja Ståhl ovat suomalaisten suosikkeja. Lauantai-iltaisin ohjelma on vetänyt tv-katsojat arv11370Amazing Race Tomas rehellisenä Esko-appiukon, 63, tilasta: "Sairastelut ja..."
Tomas Grekov ja Esko Rotola-Pukkila ovat mukana Amazing Race Suomi -kisassa. Ja nyt vuorossa on finaali. Hankaluuksia m11357