![]() |
Een string vermenigvuldigen
Iemand een idee hoe ik een string een x aantal keer kan laten voorkomen?
de string is geen getal maar een symbool. code is vb.NET -Lothar |
Wat bedoel je precies met x aantal keren laten voorkomen...
Op basis van een voorwaarde, op basis van een lus, of gewoon in verschillende labels, textboxen of message boxen... Voorwaarde de if elsjes, lusjes door lusjes, en in het derde geval de labels, textboxen of message boxen een waarde geven... Als je exacter bent ivm methode kan je mss geholpen worden. Vergeet ook je variabel niet te declareren (ik ken de juiste term niet, declareren is voor classes zeker. dus Dim ..... ) |
In VB-pseudocode (roestige kennis van VB):
Code:
s = 'Dit is mijn string' |
een teller beslist het aantal keer
dus ik typte dan intTeller * strWoord maar hij wil gaan rekenen dan met de string maar ik wil gewoon Teller aantal keer strWoord tonen |
als de teller gelijk is aan 4 moet ik dus strWoord strWoord strWoord strWoord krijgen bijvoorbeeld.
|
dit is de opgave voor de duidelijkheid:
http://img207.imageshack.us/img207/7730/schoolhk4.jpg en dit is mn code tot nu toe: Dim strSymbool As String Dim intStartwaarde As Integer Dim intEindwaarde As Integer Dim intTeller As Integer Dim strConclusie As String strSymbool = txtSymbool.ToString intStartwaarde = CInt(txtstartwaarde.text) intEindwaarde = CInt(txtEindwaarde.Text) For intTeller = intStartwaarde To intEindwaarde strConclusie = intTeller * strSymbool & vbCrLf lblResultaat.Text = strConclusie Next en Hij geeft een fout bij het intTeller * strSymbool omdat hij dat wiskundig bekijkt en niet weet dat hij de string evenveel keer moet tonen als de teller zegt. |
correctie code:
Dim strSymbool As String Dim intStartwaarde As Integer Dim intEindwaarde As Integer Dim intTeller As Integer Dim strConclusie As String strSymbool = txtSymbool.ToString intStartwaarde = CInt(txtstartwaarde.text) intEindwaarde = CInt(txtEindwaarde.Text) For intTeller = intStartwaarde To intEindwaarde strConclusie = strConclusie & intTeller * strSymbool & vbCrLf lblResultaat.Text = strConclusie Next |
Lees misschien ook eens gewoon mijn reply, want daarmee zou je het moeten kunnen vinden. Programmeren is niet anderen je werk laten doen, maar zelf eens proberen nadenken...
|
Citaat:
Dit is wat ik dan krijg: http://img523.imageshack.us/img523/7839/school1if3.jpg |
Citaat:
De fout zit namelijk in 'strSymbool = txtSymbool.ToString'. Maar ik laat aan jou over om te zien wat er daar niet aan klopt. Aan je andere code valt te zien dat je wel weet hoe het moet, maar hier gewoon wat verward zal geweest zijn. Ik hoop dat je er zo uitgeraakt, werk dus verder van de code die je daar post, er zit nog 1 fout in je code (in 1 regel). Eens die eruit is, heb je perfect werkende code. |
ik was een week op reis met school. Ben nu terug.
ik heb strsymbool verander door chrSymbool (char) en nu zet hij het juist maar de 'piramide' klopt nog niet :( ik heb geen idee hoe ik nu verder moet. |
Dat was de fout niet, het lijkt me dus raar als je daar goedlijkende output uit krijgt. Bovendien, voor zover ik weet, forceert Basic niet dat een string/char moeten beginnen met str/chr (dat was in mijn Basic-dagen, toch niet zo, voor zover ik me dat kan herinneren). Anyhow: je lost een probleem niet op door iets een andere naam te geven (al denkt men daar in de bedrijfswereld en in de politiek soms anders over).
Oribeer anders eens te verwoorden wat hij doet op de lijn die ik aangegeven heb. Om je wat sneller vooruit te laten gaan, in de spoiler staat wat hij werkelijk doet.
Spoiler
Geraak je er met die vage uitleg nog niet uit:
Spoiler
|
code nu;
Dim intTeller As Integer Dim chrSymbool As Char Dim intBeginwaarde, intEindwaarde As Integer Dim strResultaat, strConclusie As String intBeginwaarde = CInt(txtBeginwaarde.Text) intEindwaarde = CInt(txtEindwaarde.Text) chrSymbool = CChar(txtSymbool.Text) lblResultaat.Text = "" For intTeller = intBeginwaarde To intEindwaarde strResultaat = strResultaat & chrSymbool strConclusie = strConclusie & strResultaat & vbCrLf Next lblResultaat.Text = strConclusie dit werkt maar als mijn beginwaarde bijvoorbeeld 5 is begint het niet met 5 keer het symbool.. :( |
Dat komt omdat de lus ook niet genoeg doorlopen wordt daarvoor. Weeral: bedenk eens goed wat je code nu doet. Wat hij momenteel doet is:
je begint met een lege string, je komt in die lus en je stelt intTeller = intBeginWaarde bij de eerste iteratie (een iteratie is een keer die lus doorlopen). Wat je doet, is bij je strResultaat (die tot dan toe leeg is), je symbool bijtellen. En hem aan je conclusie vastmaken. Je moet eerst beginnen met die (bv. 5), en die string klaarmaken. Hoe ik dat zou doen, in dit geval toch, is gewoon van 1 tot eindwaarde laten lopen, maar dan wel kijken of de strResultaat die je gemaakt hebt, wel toegevoegd moet worden (bedenkt voor jezelf met wat voor commando je dat doet en welke voorwaarde je nodig hebt). Daarnaast, heb ik nog een kleine verbetering voor je code, die een beetje op de details ingaat. Het is niet dat jouw code verkeerd is, maar het lijkt me iets mooier. In plaats van Code:
strConclusie = strConclusie & strResultaat & vbCrLf Code:
strConclusie = strConclusie & vbCrLf & strResultaat |
nu werkt het perfect =)
ik heb een tweede teller gebruikt voor de eerste waarde :) Dim intTeller, intTeller2 As Integer Dim chrSymbool As Char Dim intBeginwaarde, intEindwaarde As Integer Dim strResultaat, strConclusie As String intBeginwaarde = CInt(txtBeginwaarde.Text) intEindwaarde = CInt(txtEindwaarde.Text) chrSymbool = CChar(txtSymbool.Text) lblResultaat.Text = "" For intTeller2 = 2 To intBeginwaarde strResultaat = strResultaat & chrSymbool Next For intTeller = intBeginwaarde To intEindwaarde strResultaat = strResultaat & chrSymbool strConclusie = strConclusie & vbCrLf & chrSymbool Next lblResultaat.Text = strConclusie bedankt voor al je hulp! -Lothar |
Citaat:
Dim chrSymbool As Char Dim intBeginwaarde, intEindwaarde As Integer Dim strResultaat, strConclusie As String intBeginwaarde = CInt(txtBeginwaarde.Text) intEindwaarde = CInt(txtEindwaarde.Text) chrSymbool = CChar(txtSymbool.Text) lblResultaat.Text = "" For intTeller2 = 2 To intBeginwaarde strResultaat = strResultaat & chrSymbool Next For intTeller = intBeginwaarde To intEindwaarde strResultaat = strResultaat & chrSymbool strConclusie = strConclusie & strResultaat & vbCrLf Next lblResultaat.Text = strConclusie (foutje) |
Ik ben blij dat je eruit geraakt bent :-) Stiekem is programmeren eigenlijk voor 80% debuggen, zoals je hier al wel gemerkt zal hebben :)
|
ja inderdaad.
Eerst ergerde ik me aan je vage tips maar uiteindelijk heb ik er nu wel iets mee geleerd. Mocht je gewoon verteld hebben wat fout was zou ik er niks aan gehad hebben. bedankt :) -Lothar |
Alle tijden zijn GMT +1. Het is nu 07:57. |
Powered by vBulletin® Version 3.8.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.