DontTouchMyPhone Skrevet 2. november 2009 Del Skrevet 2. november 2009 Hei! Jeg har et problem. Det er en oppgave jeg ikke får til. Jeg skal lage et enkelt passordsystem basert på løkker og nøsting av løkker, som skal teste om passordet er riktig, men brukern skal bare ha tre forsøk. Jeg skulle også ta hensyn til tre mulige brukere med forskjellig passord. Er ganske lost; trøster meg med at jeg akkurat fikk til en annen oppgave jeg har klundra med, men nå er det altså på`n igjen... Lenke til kommentar
VD Skrevet 2. november 2009 Del Skrevet 2. november 2009 (endret) Hvilket språk? passord = "test" test = read-input = "tast inn passordet ditt" ok = false while(ok !=true){ if(i=3){"Du har tastet inn feil passord 3 ganger hadet" break} if(test == passord){"Velkommen" gåtilmetode() break} i++ } exit Dette vil ikke kompilere uansett språk men du har noe å gå utifra iallefall. Du må også gjøre det mulig å sjekke flere brukere men det trenger ikke å bli komplisert. Endret 2. november 2009 av VD Lenke til kommentar
DontTouchMyPhone Skrevet 2. november 2009 Forfatter Del Skrevet 2. november 2009 Hvilket språk? passord = "test" test = read-input = "tast inn passordet ditt" ok = false while(ok !=true){ if(i=3){"Du har tastet inn feil passord 3 ganger hadet" break} if(test == passord){"Velkommen" gåtilmetode() break} } exit Dette vil ikke kompilere uansett språk men du har noe å gå utifra iallefall. Du må også gjøre det mulig å sjekke flere brukere men det trenger ikke å bli komplisert. Hei! Programmet skal lages i visual basic 2008. Jeg har ikke så mye peiling ennå, så det skjærer seg glatt når det er nøsting av løkker osv. Lenke til kommentar
GeirGrusom Skrevet 3. november 2009 Del Skrevet 3. november 2009 Private UserList As New Dictionary(Of String, Of String) Private Overrides Sub OnLoad(ByVal e As EventArgs) UserList.Add("Admin", "abc123") UserList.Add("Usikker", "heihei") UserList.Add("Brukernavn", "passord") End Sub Private Sub OkayButtonClick(ByVal sender As Object, ByVal e As EventArgs) Static Dim Count As Integer = 3 If(Count > 0) ' Brukernavn lagret i key, passord i value. For Each entry As ValuePair(Of String, Of String) In UserList If entry.Key.ToLower() == UserName.Text.ToLower() And entry.Value == Password.Text Then MessageBox.Show("Velkommen!") End If Next Else Count = 0 MessageBox.Show("Du har prøvd tre ganger, nå får det være nok!") End If Count -= 1 End Sub Har ikke testet dog. Lenke til kommentar
DontTouchMyPhone Skrevet 3. november 2009 Forfatter Del Skrevet 3. november 2009 Tusen takk for svar; det var godt med litt hjelp! Nå har jeg ytterligere et problem; hvorfor virker ikke det her: Public Class Form1 Private Function aar(ByVal tall_a As Integer) As Integer Dim alder As Integer alder = tall_a If tall_a >= 12 Or tall_a <= 20 Then MsgBox("Du er ikke tenåring") Else MsgBox("Du er tenåring") End If Return alder End Function _____________________________ Private Sub btnTenaaring_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnTenaaring.Click Dim alder1 As Integer TextBox1.Text = aar(alder1) End Sub End Class __________________________- Det jeg vil programmet skal gjøre er å skrive ut at "Du er ikke tenåring" når alle tall bortsett fra 13 til 19 skrives inn i tekstboksen. Nå skrives det ut uansett hva som tastes inn. Jeg veit jeg ikke bør bruke if og denslags i selve funksjonen, men her sto det i oppgaveteksten at man skulle gjøre det. Hjelp... Lenke til kommentar
backup Skrevet 3. november 2009 Del Skrevet 3. november 2009 If tall_a <= 12 Or tall_a >=20 Then Lenke til kommentar
DontTouchMyPhone Skrevet 3. november 2009 Forfatter Del Skrevet 3. november 2009 If tall_a <= 12 Or tall_a >=20 Then Takk for svar! Jeg får fremdeles kun opp "Du er ikke tenåring", uansett hvilket tall jeg skriver inn. Hvorfor kommer ikke "Du er tenåring" når jeg skriver inn tall utenfor disse verdiene; altså 1-11 og 20-uendelig? Hvorfor slår ikke "Else"-delen til? Lenke til kommentar
NikkaYoichi Skrevet 3. november 2009 Del Skrevet 3. november 2009 Du kan jo prøve dette? i=13 while (i<20) { If (tall_a !=i, i++)} { else echo ("du er tenåring")} Eller deromkring. Lenke til kommentar
DontTouchMyPhone Skrevet 3. november 2009 Forfatter Del Skrevet 3. november 2009 Du kan jo prøve dette? i=13 while (i<20) { If (tall_a !=i, i++)} { else echo ("du er tenåring")} Eller deromkring. Hei! Skal prøve litt nå, takk skal du ha! Men jeg skulle gjerne visst hva som var feil med koden min, sånn at jeg skjønner mer av det også. Lenke til kommentar
DontTouchMyPhone Skrevet 3. november 2009 Forfatter Del Skrevet 3. november 2009 Du kan jo prøve dette? i=13 while (i<20) { If (tall_a !=i, i++)} { else echo ("du er tenåring")} Eller deromkring. Hei! Skal prøve litt nå, takk skal du ha! Men jeg skulle gjerne visst hva som var feil med koden min, sånn at jeg skjønner mer av det også. Tror jeg har fått det til med denne koden: Private Function aar(ByVal alder As Integer) As Integer Dim alder2 As Integer Dim melding As String alder2 = CInt(TextBox1.Text) If alder2 > 12 And alder2 < 20 Then melding = "Du er tenåring." Else melding = " Du er ikke tenåring." End If MsgBox(melding) Return alder Lenke til kommentar
NikkaYoichi Skrevet 3. november 2009 Del Skrevet 3. november 2009 (endret) Du kan jo kjøre en sinnsvak nøsting da, slik at du får trent på det, test på hvert enkelt tall. Njo, jeg kunne sikkert hjulpet mer om jeg hadde gjort noe som helst programmering siden 2004, men siden det er så innmari lenge siden og jeg ikke har noen utviklerverktøy foran meg, så sliter jeg dessverre litt med å hjelpe deg med spesifikk kode, logikken kan jeg støtte på, slik at du kan få idéer til løsninger. Jeg tror kanskje jeg ville prøvd følgende: If tall_a >12 and <20 Det må være en bedre løsning. Edit: Nå skal du slutte å poste riktig svar mens andre prøver å hjelpe deg. Bra jobba! Jeg husker jeg koste meg med Visual Basic den gangen jeg studerte, back in the days. Jeg har hatt lyst til å plukke opp igjen det faktisk, for det er jo gøy. Jeg fikk faktisk 1.something på VB-eksamen. Endret 3. november 2009 av NikkaYoichi Lenke til kommentar
DontTouchMyPhone Skrevet 3. november 2009 Forfatter Del Skrevet 3. november 2009 Takk for all hjelp alikevel, det er så ålreit at det er noen som gidder å bruke tid på å hjelpe en så til de grader nybegynner som meg. Jeg har akkurat begynt med visual basic selv, og jeg syns det er gøy. Men eksamen blir nok lite festelig, for det er lite som "sitter" foreløpig, og jeg har minimalt med tid til å øve meg "for å øve". Så det blir neppe en karakter å skryte av, siden jeg bruker laaaang tid på det andre syns er helt basic. Men men, må jo prøve alikevel da! Lenke til kommentar
GeirGrusom Skrevet 4. november 2009 Del Skrevet 4. november 2009 Jeg må nesten gi deg litt ros, trådstarter. Du gjør noe her som er svært uvanlig for nybegynnere, og det er å faktisk lese koden til de som poster. De fleste ville kopiert og limt inn koden til NikkaYoichi og klaget på compile feil. Lenke til kommentar
NikkaYoichi Skrevet 4. november 2009 Del Skrevet 4. november 2009 Geir: Ja, jeg er helt enig. Dette er en trådstarter jeg liker også. Som faktisk vil forstå. Jeg innrømmer gladelig at jeg ikke klarer å skrive kompilerbar kode fra løse lufta. Som sagt, tross alt er det 5-6 år siden jeg sist programmerte. Og koden jeg skrev ned, var sånn jeg ville tenkt meg, rent logisk å gjøre det, intet annet. Jeg har jo tilgang til alle verktøene til MS på jobb, så hvorfor jeg ikke har installert noen av dem enda, det vet jeg faktisk ikke. I'll be back, når jeg bare har fått installert og faktisk begynt å programmere igjen. Er .NET like enkelt som Visual Basic 6.0? Lenke til kommentar
GeirGrusom Skrevet 4. november 2009 Del Skrevet 4. november 2009 Like enkelt... Næh, ville ikke si det, en har dog temmelig mange flere muligheter i Visual Basic 2008, og fryktelig mye som mangler i Visual Basic 6.0 (som reell polymorfisme, og generics er en fordel i VB 2008) Jeg kan dog ikke komme på én ting som er bedre i VB6, men det er helt sikkert noen. Visual Basic 2008 vil jeg uansett si er et mye bedre verktøy en Visual Basic 6.0. ... men C# er mye bedre enn det igjen ... Lenke til kommentar
DontTouchMyPhone Skrevet 11. november 2009 Forfatter Del Skrevet 11. november 2009 Hei igjen! Fins det noen måte jeg kan tilpasse følgende kode på; slik at den godtar 3 brukere med forskjellige passord? : Dim passord, brukernavn As String brukernavn = InputBox("Hva er brukernavnet ditt?") If brukernavn = "Per" Then passord = InputBox(Prompt:="Hva er passordet ditt?", _ Title:="Brukernavn: " & brukernavn) If passord = "1234" Then MsgBox(Title:="Velkommen " & brukernavn, _ Prompt:="Innlogging er vellykket!", _ Buttons:=MsgBoxStyle.Information) Else MsgBox("Passord til " & brukernavn & " er ikke riktig", _ MsgBoxStyle.Exclamation) End If Else MsgBox("Feil brukernavn", MsgBoxStyle.Exclamation) End If Greit å kunne bruke noe en skjønner fra før som grunnlag, blir lettere da! Lenke til kommentar
NikkaYoichi Skrevet 12. november 2009 Del Skrevet 12. november 2009 Du må vel enten lage et array eller f.eks en kommaseparert fil - som inneholder brukernavn og passord. Slik at du kan lese inn variablene brukernavn og passord og teste mot arrayet eller filen. Evnt. kan du jo lagre 6 variabler, b1,b2,b3,p1,p2,p3. Les så inn brukernavn og passord og test mot de hardkodede variablene. If brukernavn = b1 AND p1 Then Prompt:="Grattis!" End If If brukernavn = b2 AND p2 Then Prompt:="Tralallalalala!" End IF If brukernavn =b3 AND p3 Then Prompt:="Wohoooo!!!!!" Else MsgBox("Screw you!") End If Lenke til kommentar
DontTouchMyPhone Skrevet 12. november 2009 Forfatter Del Skrevet 12. november 2009 Hei igjen! Nå har jeg endre koden litt, slik at tre brukere i alle fall kommer fra til passordspørsmålet: ------------------------------ Dim passord, brukernavn As String brukernavn = InputBox("Hva er brukernavnet ditt?") If brukernavn = "Per" Then passord = InputBox(Prompt:="Hva er passordet ditt?", _ Title:="Brukernavn: " & brukernavn) ElseIf brukernavn = "Kari" Then passord = InputBox(Prompt:="hva er passordet ditt?", _ Title:="Brukernavn: " & brukernavn) ElseIf brukernavn = "Geir" Then passord = InputBox(Prompt:="hva er passordet ditt?", _ Title:="Brukernavn: " & brukernavn) If passord = "1234" Then MsgBox(Title:="Velkommen " & brukernavn, _ Prompt:="Innlogging er vellykket!", _ Buttons:=MsgBoxStyle.Information) Else MsgBox("Passord til " & brukernavn & " er ikke riktig", _ MsgBoxStyle.Exclamation) End If Else MsgBox("Feil brukernavn", MsgBoxStyle.Exclamation) End If End Sub --------------------------- Jeg fikk ikke til løsningen din er jeg redd (er jo helt novise da), også lurer jeg på noe. Dersom jeg skulle bruke : "If brukernavn = b1 AND p1 Then" osv., da må jeg vel spørre om brukernavn og passord på èn gang? Prøver bare å skjønne koden . Nå kommer jeg som sagt i alle fall fram til spørsmålet om passord. Hvordan får jeg inne passord på brukerne Per, Kari og Geir? For øyeblikket vises det til kun ett passord, og det blir jo bare surr. Programmet gir seg på en måte etter at jeg har kommet til inputbox for passord; uansett hva jeg skriver får jeg ingen respons; verken som feilmelding eller noen av msgboxene. Lenke til kommentar
brgr Skrevet 13. november 2009 Del Skrevet 13. november 2009 (endret) Du kan gjøre det, eller så kan du jo dele det opp. Kode til forslag 1: Sub AskForUser() Dim b1, b2, b3, p1, p2, p3 as String b1 = "Per": b2 = "Kari": b3 = "Geir" p1 = "Abc": p2 = "Abcd": p3 = "1234" Dim Ferdig As Boolean = False ' Bruke denne for å sjekke om den skal slutte å spørre etter bruker. Dim Forsøk As Integer = 0 ' registrer antall forsøk. Do Until Ferdig Dim input_Brukernavn As String = InputBox("Hva er brukernavnet ditt?") 'hvis vi ønsker att vi ikke skal være nøye med store bokstaver kan du bruker input_Brukernavn.ToLower() som gjør teksten med små bokstaver, da må også brukernavn være lagret som små bokstaver!!! If input_Brukernavn = b1 Then Dim input_Passord As String = InputBox("Hva er passordet ditt?") If input_Passord = p1 Then MsgBox("Korrekt innlogging") 'Sette variablen ferdig til True for att den skal slutte å spør om passord. Ferdig = True End If End If 'gjenta ovenstående for hver bruker Forsøk += 1 ' legg til 1 til verdien av forsøk If Forsøk >= 3 Then 'det har blitt forsøkt 3 ganger. msgbox("Feil passord 3 ganger.") End If Loop End Sub Forslag 2: (bruk av arrays) Dim Brukere(2,1) 'Definer variabelen brukere som en 2-dimensjonal 'Brukere(x, y) 'x\y 0 1 ' 0 "Bruker" "Passord" ' 1 "Bruker2" "Passord" ' 2 "Bruker3" "Passord" Sub LagBrukere() 'Bruker PER Brukere(0,0) = "Per" Brukere(0,1) = "Persittpassord" 'Bruker KARI Brukere(1,0) = "Kari" Brukere(1,1) = "Karisittpassord" 'Bruker GEIR Brukere(2,0) = "Geir" Brukere(2,1) = "Geirsittpassord" End Sub Sub SjekkPassord() LagBrukere() 'legger inn rett brukerdata i listen Dim Ferdig As Boolean = False Dim Forsøk As Integer = 0 Do Until Ferdig Or Forsøk >= 3 Dim input_Brukernavn As String = InputBox("Ditt brukernavn:") 'sjekker om brukernavnet eksisterer i listen ' kjør en løkke for å sjekke alle brukerene For x As Integer = 0 To Ubound(Brukere) 'Kan bruke Brukere(x, 0).ToLower hvis du ikke skal gå etter store bokstaver If input_Brukernavn = Brukere(x, 0) Then Dim input_Passord As String = InputBox("Ditt passord:") If input_Passord = Brukere(x, 1) Then MsgBox("Ferdig!") Ferdig = True Else MsgBox("Feil!") End If End If Next x Forsøk += 1 Loop If Forsøk >= 3 Then MsgBox("Du har prøvd å logge inn med ugyldig påloggings informasjon") End If End Sub Finnes utallige måter å gjøre dette på. For så å svare på spørsmålene dine du må spør etter passordet i den samme koden du har sjekket brukernavnet om det stemmer. Det vil si noe som: If brukernavn = "Per" Then passord = InputBox("Hva er passordet ditt?", "Brukernavn: " & brukernavn) If passord = "1234" Then MsgBox("Velkommen " & brukernavn, "Innlogging er vellykket!", MsgBoxStyle.Information) End If 'Fortsett med else setninger. Endret 13. november 2009 av brgr Lenke til kommentar
Ducktoy Skrevet 13. november 2009 Del Skrevet 13. november 2009 (endret) brgr, tror arrayen din er litt feil om jeg leser den rett. burde den ikke være: 'Bruker PER Brukere(0,0) = "Per" Brukere(0,1) = "Persittpassord" 'Bruker KARI Brukere(1,0) = "Kari" Brukere(1,1) = "Karisittpassord" 'Bruker GEIR Brukere(2,0) = "Geir" Brukere(2,1) = "Geirsittpassord" ? Endret 13. november 2009 av Ducktoy Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå