Gå til innhold

Hjelp til en kode med løkker og nøsting


Anbefalte innlegg

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... :cry:

Lenke til kommentar
Videoannonse
Annonse

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 av VD
Lenke til kommentar
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. :blush:

Lenke til kommentar

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

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... :blush:

Lenke til kommentar
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

Du kan jo kjøre en sinnsvak nøsting da, slik at du får trent på det, test på hvert enkelt tall. :wee:

 

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. :D 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 av NikkaYoichi
Lenke til kommentar

:D

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! :thumbup:

Lenke til kommentar

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. :D 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? :p

Lenke til kommentar

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

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

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

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

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 av brgr
Lenke til kommentar

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 av Ducktoy
Lenke til kommentar

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...