Hoe kan je in via een loop een reeks characters plaatsen? Wat ik wil zeggen. Op de eerste lijn schrijf ik één ster. Op de tweede lijn drie. Op de derde lijn schrijf ik vijf sterren , op de vierde lijn schrijf ik zeven sterren, op de vijfde negen sterren enzo. Er komen dus steeds twee sterren bij.
Graag had ik dit via een array willen oplossen ,maar weet niet goed hoe ik steeds het aantal sterren met twee verhoog.
Wie kan me helpen?
Dit moet je helemaal niet met een array oplossen. Je kan gewoon met twee For-Loops door elkaar werken. Ik heb snel even een Form gemaakt met een Label met als Name "Label2", in het Form_Load event heb ik deze code:
euh... Ik weet het ook niet goed... Kan je gewoon geen array opvullen met een bepaald aantal sterretjes? In een loop verhoog je iedere keer met twee sterretjes.
Het moet eigenlijk een kerstboom vormen. Dit het moet eigenlijk ook nog symmetrisch of gecentreerd zijn. dit is een voorbeeld. Maar klaarblijkelijk wordt ie op het forum links uitgelijnd... Damn..
Programma-verloop :
Count ?
<input> 3
---------------------------------------
*
***
*****
*
---------------------------------------
'variabelen declareren
Dim output As String = "", spaties As String = ""
Dim i, j, k, x As Integer
'x bepaalt de grootte van de boom, mag je zelf veranderen
'mag GEEN even getal zijn, anders is de boom f*cked up, probeer maar :D
x = 45
'lege string aanmaken met spaties, nodig voor de lege ruimte
For k = 1 To x Step 1
spaties &= " "
Next
'hoofd-loop beginnen
For i = 1 To x Step 2
'berekenen hoeveel spaties er langs elke kant moeten komen
'en een substring nemen om het juiste aantal spaties te zetten
output &= spaties.Substring(0, Convert.ToInt32(((x - i) / 2)))
'binnen-loop om de sterretjes te plaatsen
For j = 1 To i Step 1
output &= "*"
Next
'zelfde als hierboven
output &= spaties.Substring(0, Convert.ToInt32(((x - i) / 2)))
'nieuwe regel toevoegen
output &= Environment.NewLine
Next
'resultaat weergeven in console
Console.Write(output)
'variabelen declareren
Dim output AsString="", spaties AsString=""
Dim i, j, k, x AsInteger
'x bepaalt de grootte van de boom, mag je zelf veranderen
'mag GEEN even getal zijn, anders is de boom f*cked up, probeer maar :D
x =45
'lege string aanmaken met spaties, nodig voor de lege ruimte
For k =1To x Step1
spaties &=" "
Next
'hoofd-loop beginnen
For i =1To x Step2
'berekenen hoeveel spaties er langs elke kant moeten komen
'en een substring nemen om het juiste aantal spaties te zetten
hey titjes... man man man... goe bezig hoor... Alvast bedankt!
Maar ik heb eigenlijk wel een probleempje met je code. Ondanks je goed gemotiveerde komentaar tussen de code zijn er een aantal elementen die ik niet vat. Jammer maar helaas.
dit is eigenlijk de opgave
thx.
Dim flag As Boolean = False
'Variabelen
Dim output As String = "", spaties As String = "", input As String = ""
Dim i, j, k, x As Integer
'Do-Loop
Do While flag = False
Console.Write("Count? ")
input = Console.ReadLine()
'Als de invoer niet numeriek is
If (Not IsNumeric(input)) Then
Console.WriteLine("ERROR: only numeric input allowed!")
Else
'Normaal gebruik je Modulus maar ik vond hem niet
'Dit controleert of de invoer even/oneven is
flag = (CInt(input) / 2).ToString.Contains(",")
'Bij even getal: foutmelding
If flag = False Then
Console.WriteLine("ERROR: only odd numbers allowed!")
Else
'Bij juiste invoer: flag op True zodat uit de Loop gesprongen wordt
flag = True
'Invoer in var x opslaan
x = Convert.ToInt32(input)
End If
End If
Loop
'Ongeveer hetzelfde als de vorige code om de spaties te berekenen
For k = 1 To ((x * 2) - 1) Step 1
spaties &= " "
Next
'Hier ook, alleen in de berekeningen een beetje anders
For i = 1 To x Step 1
output &= spaties.Substring(0, (x - i))
For j = 1 To ((i * 2) - 1) Step 1
output &= "*"
Next
output &= spaties.Substring(0, (x - i)) & Environment.NewLine
Next
'Extra sterretje als stam onderaan
output &= spaties.Substring(0, (x - 1)) & "*" & spaties.Substring(0, (x - 1))
'Wegschrijven
Console.Write(output)
Console.ReadKey()
Dim flag AsBoolean=False
'Variabelen
Dim output AsString="", spaties AsString="", inputAsString=""
Dim i, j, k, x AsInteger
'Do-Loop
DoWhile flag =False
Console.Write("Count? ")
input= Console.ReadLine()
'Als de invoer niet numeriek is
If(NotIsNumeric(input))Then
Console.WriteLine("ERROR: only numeric input allowed!")
Else
'Normaal gebruik je Modulus maar ik vond hem niet
'Dit controleert of de invoer even/oneven is
flag =(CInt(input)/2).ToString.Contains(",")
'Bij even getal: foutmelding
If flag =FalseThen
Console.WriteLine("ERROR: only odd numbers allowed!")
Else
'Bij juiste invoer: flag op True zodat uit de Loop gesprongen wordt
flag =True
'Invoer in var x opslaan
x = Convert.ToInt32(input)
EndIf
EndIf
Loop
'Ongeveer hetzelfde als de vorige code om de spaties te berekenen
For k =1To((x *2)-1)Step1
spaties &=" "
Next
'Hier ook, alleen in de berekeningen een beetje anders
hey titjes. Sorry voor mijn late reply. kan het ook via ingebedde for next lusjes? Dit is wat ik al gevonden heb. Maar ik krijg ze nie gecentreerd... damned...
Sub Main()
Dim count As Integer = 16
For i As Integer = 1 To count
For j As Integer = 1 To 2 * i - 1
Console.Write("*")
Next
Console.WriteLine()
Next
Console.ReadKey()
End Sub
Sub Main()
Dim count AsInteger=16
For i AsInteger=1To count
For j AsInteger=1To2* i -1
Console.Write("*")
Next
Console.WriteLine()
Next
Console.ReadKey()
EndSub
en de formule om het aantal spaties te berekenen is: count\2 maar hoe schrijf ik die dan weg?...
Abbas - 09/11/2008 19:28 (laatste wijziging 09/11/2008 23:09)
Crew .NET
1. Bij mij zijn er ook 2 Loops in elkaar.
2. Mijn code centreert.
3. Spaties: kijk naar mijn code.
Uw code is zoizo al een beetje "verkeerd", je moet een oneven getal nemen voor de kerstboom! En als je m'n code bekijkt zie je dat:
1.
Eerst de lege String met alleen maar spaties wordt gemaakt. Dit door een simpele formule: het ingevoerde getal doe je maal 2 (omdat er per regel elke keer 2 sterretjes bijkomen) en dan min één omdat dit er eentje teveel is gewoon. Deze lege String heb je nodig voor je lege plaatsen op te vullen rond de boom om hem gecentreerd te krijgen.
2.
In de Loop daarna ga je elke keer als je aan het begin bent van die spatie-String een stukje nemen (Substring()) om weg te schrijven rond de sterretjes.
Stel, ons ingevoerde getal is 5, dan is de lengte van de spatie-String 9. De eerste regel wordt dan, door de code:
'ingevoerde getal is 5
'en 1 omdat we hiermee beginnen
output &= spaties.Substring(0, (5 - 1))
'ingevoerde getal is 5
'en 1 omdat we hiermee beginnen
output &= spaties.Substring(0, (5-1))
Dat zorgt dus dat we van de spatie-String een stuk nemen van 5-1 (4) tekens lang. Die schrijven we weg, daarna een sterretje en dan terug 4 spaties. De volgende keer dat we in de Loop zijn zal dit 5-2 (3) worden, enz... De laatste keer geen spaties meer, enkel sterretjes.