Toon posts:

[VB2005] Woord Spiegelen

Pagina: 1
Acties:
  • 770 views sinds 30-01-2008

Verwijderd

Topicstarter
Hallo,

Ik ben een eerstejaars student Bedrijfskundige Informatica. Nu moet ik in Visual Basic 2005 Express Edition een programma schrijven die het volgende doet:
Invoer: een woord via kbd:
Uitvoer: (1) Het ingevoerde woord achterstevoren en (2) de melding of het woord een palindroom is.

Het woord omdraaien kan makkelijk met strReverse functie, maar dat mag niet. Je moet de substring functie gebruiken. Nu weet ik niet hoe dit moet...zou iemand mij dit kunnen uitleggen?

Tot nog toe heb ik dit:
Visual Basic:
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
Module Module1

    Sub Main()
        Dim Woord As String
        Dim Lengte As Integer
        Dim isPalindroom As Boolean
        Dim Omgekeerd As String

        Console.WriteLine("Geef een woord:")
        Woord = Console.ReadLine()

        Lengte = Woord.Length
        Console.WriteLine("De lengte van het opgegeven woord is " & Lengte & " letters")

        While Lengte > 0

            Lengte = Lengte - 1
        End While

        Console.WriteLine("Het woord omgekeerd: " & Omgekeerd)

        If Woord = Omgekeerd Then
            isPalindroom = True
        Else
            isPalindroom = False
        End If

        If isPalindroom = True Then
            Console.WriteLine("Dit woord is een palindroom")
        Else
            Console.WriteLine("Dit woord is geen palindroom")
        End If

        Console.ReadLine()
    End Sub

End Module



Bij voorbaat dank:)

  • Snake
  • Registratie: Juli 2005
  • Laatst online: 07-03-2024

Snake

Los Angeles, CA, USA

Je maakt een nieuwe string aan.

Je doet een loopje op je oude string, daar pak je telkens een letter op het einde van af met substring (omgekeerde loop dus), en die append je altijd aan je nieuwe string.

Dat is de enigste manier hoe ik het zou doen...

Going for adventure, lots of sun and a convertible! | GMT-8


Verwijderd

Topicstarter
En hoe append je? :?

  • Snake
  • Registratie: Juli 2005
  • Laatst online: 07-03-2024

Snake

Los Angeles, CA, USA

Basic work...
nieuwe_string = nieuwe_string & oudestring

Going for adventure, lots of sun and a convertible! | GMT-8


  • CodeCaster
  • Registratie: Juni 2003
  • Niet online

CodeCaster

Can I get uhm...

Het woord omdraaien doe je met een loopje wat achteruit loopt, dus

Psuedo-Code:
Visual Basic .NET:
1
2
3
For i = OudeString.Length to 0 Step -1
 NieuweString = NieuweString & OudeString.SubString(i, 1)
Next i


En om te kijken of het een palindroom is vergelijk je de eerste helft van de nieuwe string met de eerste helft van de oude. Wanneer deze overeenkomen is het een palindroom. - Edit: of de hele string natuurlijk 8)7 zoals de meneer hier onder mij zegt. Stom van mij.

Wannabe-mod-mode: er wordt hier op GoT wel van je verwacht dat je zelf wat inzet toont, meld dus wat je geprobeerd hebt en wat hier niet aan lukte, in plaats van te vragen "en hoe append je? :? " had je ook zelf even kunnen zoeken, hoewel het samenvoegen van twee strings zwaar basiswerk is. Succes in ieder geval. Heb je volgende week ook vakantie? Koop dan een goed VB-boek en lees dit van voor naar achter door.

[ Voor 40% gewijzigd door CodeCaster op 18-02-2007 15:36 ]

https://oneerlijkewoz.nl
Op papier is hij aan het tekenen, maar in de praktijk...


Verwijderd

C#:
1
2
3
4
5
6
7
8
9
string nieuwWoord = "";
for(int i = (woord.Length-1); i >= 0; i--)
{
  nieuwWoord += woord[i];
}
if(nieuwWoord == woord)
{
 palindroom = true;
}


Dit zou moeten werken :)

Verwijderd

Topicstarter
CodeCaster schreef op zondag 18 februari 2007 @ 15:31:
Het woord omdraaien doe je met een loopje wat achteruit loopt, dus

Psuedo-Code:
Visual Basic .NET:
1
2
3
For i = OudeString.Length to 0 Step -1
 NieuweString = NieuweString & OudeString.SubString(i, 1)
Next i


En om te kijken of het een palindroom is vergelijk je de eerste helft van de nieuwe string met de eerste helft van de oude. Wanneer deze overeenkomen is het een palindroom.

Wannabe-mod-mode: er wordt hier op GoT wel van je verwacht dat je zelf wat inzet toont, meld dus wat je geprobeerd hebt en wat hier niet aan lukte, in plaats van te vragen "en hoe append je? :? " had je ook zelf even kunnen zoeken, hoewel het samenvoegen van twee strings zwaar basiswerk is. Succes in ieder geval. Heb je volgende week ook vakantie? Koop dan een goed VB-boek en lees dit van voor naar achter door.
Ik heb gekeken op diverse VB sites voor informatie. Maar ik ben echt een beginner. Hiervoor alleen maar gerekend met VB. ;) Dit is mijn tweede programmaatje. Heb al een boek besteld maar dit moet overmorgen af...

Bedankt voor jullie hulp in ieder geval, denk dat ik er zo wel uit ga komen _/-\o_ O-)

[ Voor 3% gewijzigd door Verwijderd op 18-02-2007 15:36 ]


  • Dido
  • Registratie: Maart 2002
  • Laatst online: 10:34

Dido

heforshe

@ CodeCaster:
Waarom de eerste helft van de nieuwe met de laatste helft van de oude vergelijken :?
Als nieuw=oud is het een palindroom.

Volgens jou is "lepel" geen palindroom, immers, het heeft een oneven aantal letters. Ook "naan" is geen palindroom, want "na" is niet gelijk aan "an", en dat is wat jij vergelijkt.

Wat betekent mijn avatar?


  • Snake
  • Registratie: Juli 2005
  • Laatst online: 07-03-2024

Snake

Los Angeles, CA, USA

Visual Basic .NET:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Module Module1

    Sub Main()
        Dim oude_string As String = "Kristof"
        Dim nieuwe_string As String = ""
        Dim lengte As Integer = oude_string.Length - 1

        While lengte >= 0
            nieuwe_string = nieuwe_string & oude_string.Substring(lengte, 1)
            lengte = lengte - 1
        End While

        Console.WriteLine(nieuwe_string)
        Console.ReadLine()

    End Sub

End Module


Hier heb je wat aan :)

Moet je wel nog checken.

edit:
meer f5-en

[ Voor 5% gewijzigd door Snake op 18-02-2007 15:37 . Reden: f5'en ]

Going for adventure, lots of sun and a convertible! | GMT-8


  • CodeCaster
  • Registratie: Juni 2003
  • Niet online

CodeCaster

Can I get uhm...

Dido schreef op zondag 18 februari 2007 @ 15:36:
@ CodeCaster:
Waarom de eerste helft van de nieuwe met de laatste helft van de oude vergelijken :?
Als nieuw=oud is het een palindroom.

Volgens jou is "lepel" geen palindroom, immers, het heeft een oneven aantal letters. Ook "naan" is geen palindroom, want "na" is niet gelijk aan "an", en dat is wat jij vergelijkt.
Ik zat scheef te denken, zie edit.

https://oneerlijkewoz.nl
Op papier is hij aan het tekenen, maar in de praktijk...


Verwijderd

Topicstarter
Bedankt allemaal, het is gelukt!!!:)

Verwijderd

Topicstarter
Krijg nu opeens een error...:
System.ArgumentOutOfRangeException was unhandled
Message=Index en lengte moeten naar een locatie binnen de tekenreeks verwijzen.

Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
Module Module1

    Sub Main()

        Dim Woord As String
        Dim Lengte As Integer
        Dim isPalindroom As Boolean
        Dim Omgekeerd As String

        Console.WriteLine("Geef een woord:")
        Woord = Console.ReadLine()

        Lengte = Woord.Length
        Console.WriteLine("De lengte van het opgegeven woord is " & Lengte & " letters")

        While Lengte >= 0
            Omgekeerd = Omgekeerd & Woord.Substring(Lengte, 1)
            Lengte = Lengte - 1
        End While

        Console.WriteLine("Het woord omgekeerd: " & Omgekeerd)

        If Woord = Omgekeerd Then
            isPalindroom = True
        Else
            isPalindroom = False
        End If

        If isPalindroom = True Then
            Console.WriteLine("Dit woord is een palindroom")
        Else
            Console.WriteLine("Dit woord is geen palindroom")
        End If

        Console.ReadLine()
    End Sub

End Module

Weet iemand wat daarmee bedoeld wordt want heb alles toch gedeclareerd? En die locatie is toch al bekend? Dat is steeds eentje meer naar voren.

  • Snake
  • Registratie: Juli 2005
  • Laatst online: 07-03-2024

Snake

Los Angeles, CA, USA

Heb je uberhaupt mijn code gelezen?
Visual Basic .NET:
13
        Lengte = Woord.Length 
=>
Visual Basic .NET:
13
        Lengte = Woord.Length - 1 


en dit kan gemakkelijk gehalveerd worden:

Visual Basic .NET:
1
2
3
4
5
6
7
8
9
10
11
If Woord = Omgekeerd Then
            isPalindroom = True
        Else
            isPalindroom = False
        End If

        If isPalindroom = True Then
            Console.WriteLine("Dit woord is een palindroom")
        Else
            Console.WriteLine("Dit woord is geen palindroom")
        End If

=>
Visual Basic .NET:
1
2
3
4
5
If Woord = Omgekeerd Then
            Console.WriteLine("Dit woord is een palindroom")
        Else
            Console.WriteLine("Dit woord is geen palindroom")
        End If

[ Voor 67% gewijzigd door Snake op 18-02-2007 16:03 ]

Going for adventure, lots of sun and a convertible! | GMT-8


Verwijderd

Topicstarter
Snakiej schreef op zondag 18 februari 2007 @ 16:01:
Heb je uberhaupt mijn code gelezen?
Visual Basic .NET:
13
        Lengte = Woord.Length 
=>
Visual Basic .NET:
13
        Lengte = Woord.Length - 1 
Jawel, maar als ik dat doe geeft hij onder woord dezelfde error als de post hiervoor. Dan krijg ik dus 2 errors...

  • Snake
  • Registratie: Juli 2005
  • Laatst online: 07-03-2024

Snake

Los Angeles, CA, USA

Visual Basic .NET:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
Module Module1

    Sub Main()

        Dim Woord As String
        Dim Lengte As Integer
        'je moet de variable initializeren
        Dim Omgekeerd As String = ""

        Console.WriteLine("Geef een woord:")
        Woord = Console.ReadLine()

        Lengte = Woord.Length - 1
        'in de volgende regel wordt Lengte niet verhoogd met 1, die is louter om het af te beelden
        Console.WriteLine("De lengte van het opgegeven woord is " & (Lengte + 1) & " letters")

        While Lengte >= 0
            Omgekeerd = Omgekeerd & Woord.Substring(Lengte, 1)
            Lengte = Lengte - 1
        End While

        Console.WriteLine("Het woord omgekeerd: " & Omgekeerd)

        If Woord = Omgekeerd Then
            Console.WriteLine("Dit woord is een palindroom")
        Else
            Console.WriteLine("Dit woord is geen palindroom")
        End If

        Console.ReadLine()
    End Sub

End Module


Werkt perfect hier?

[ Voor 7% gewijzigd door Snake op 18-02-2007 16:08 ]

Going for adventure, lots of sun and a convertible! | GMT-8


Verwijderd

Topicstarter
Hmmz...kan het er dan niet aan liggen dat ik VB2005 Express Edition heb? :?

edit:
o ik zie het al...fout zat in regel 13 moet nog + 1 bij |:(
Bedankt Snakiej :>

[ Voor 39% gewijzigd door Verwijderd op 18-02-2007 16:12 ]


  • Snake
  • Registratie: Juli 2005
  • Laatst online: 07-03-2024

Snake

Los Angeles, CA, USA

Verwijderd schreef op zondag 18 februari 2007 @ 16:08:
Hmmz...kan het er dan niet aan liggen dat ik VB2005 Express Edition heb? :?
Neen kan niet.

Copy paste mijn code eens, compileer, en geef eens de uitvoer van je console venster

Going for adventure, lots of sun and a convertible! | GMT-8


Verwijderd

Topicstarter
Probleem opgelost hij kan dicht:)

  • whoami
  • Registratie: December 2000
  • Laatst online: 00:54
Beetje laat, en het topic gaat idd dicht, maar niet omdat het opgelost is.
Opgeloste topics gaan niet dicht; enkel topics die niet aand e policy voldoen gaan dicht.
Zoals hier in het topic al aangedragen werd, mis ik toch wel wat eigen inzet. Als student informatica moet je in staat zijn om zelf je programma's te kunnen debuggen. Nu heb je eigenlijk jouw huiswerk gewoon door anderen laten oplossen, en dat kan nooit de bedoeling zijn.

Ook als je, door oplossingen van anderen nog andere fouten krijgt, zoals die OutOfRange exception, kan je zelf eerst eens gaan kijken wat die exceptie wil zeggen, hoe het komt dat je ze krijgt, en hoe je ze kan oplossen.

[ Voor 20% gewijzigd door whoami op 18-02-2007 21:48 ]

https://fgheysels.github.io/

Pagina: 1

Dit topic is gesloten.