piramide van getallen

Status
Niet open voor verdere reacties.

zettekakkers

Gebruiker
Lid geworden
21 jul 2011
Berichten
134
ik wil zo iets proberen maar het lukt echter niet en dan kan ik de code later nog aan passen.
dit moet een piramide voorstellen :s
1
212
32123
4321234
543212345
 
[CPP] For i = 1 To 5
If i = 1 Then
Console.WriteLine("1")
Else
For i2 = i To 1 Step -1
Console.Write(i2)
Next
For i2 = 2 To i
Console.Write(i2)
Next
Console.WriteLine("")
End If
Next
Console.ReadKey()[/CPP]

Output:

87796380.jpg



:D
 
Laatst bewerkt:
Pseudocode (je mag het zelf omzetten in code)

function string CreatePyramid(int count) // creates a pyramid
string output = ""
for i = 2 to count
output += i.tostring()
end for
output = output.reverse() + "1" + output
return output
end sub

zoiets zou denk ik moeten werken? Als output.reverse() niet bestaat zoek dan op -op google- hoe je een string moet omdraaien.
 
oei mijn spaties zijn weg in mij piramide
dus de 1en moeten onderelkaar staan den 2en en de 3en ....

joz1 bovenstaande code had ik al +- :)
 
@zettekakkers: Hoe wil je je piramide dan hebben? Ik dacht dat ik goed antwoord op je vraag had gegeven: Ik heb precies de piramide via code nagemaakt.

Maar hoe kwam je aan die code dan? Ik schreef hem zojuist :confused: .
 
Ik heb er maar even een sub van gemaakt, het argument 'Count' is het maximum getal, in het vorige voorbeeld dus 5.

[CPP]Public Sub Piramide(Count As Integer)
For i = 1 To Count
Dim Spaties As String = ""
If i = 1 Then
For i2 = 1 To Count
Spaties &= " "
Next
Console.WriteLine(Spaties & "1" & Spaties)
Spaties = ""
Else
For i2 = i To 1 Step -1
For i3 = i2 To Count
Spaties &= " "
Next

If i2 = i Then
Console.Write(Spaties & i2)
Else
Console.Write(i2)
End If
Spaties = ""
Next
For i2 = 2 To i
Console.Write(i2)
Next
Console.WriteLine("")
End If
Next
Console.ReadKey()
End Sub[/CPP]

Zo roep je het aan:

[CPP]Piramide(5)[/CPP]

Output:

knipselt.jpg


:d
 
Ik heb het geprobeerd zo kort mogelijk te houden. :(

Kan deze vraag op 'Opgelost' ? Of wil je wachten tot er iemand is met een kortere code?
 
PseudoCode:

sub CreatePyramid(int rows)
string empty = ""
for int i = 1 to rows
console.writeline( empty.padright(rows - i, " ") + createreeks(i))
end if
end sub

function string CreateReeks(int count)
string output = ""
if count = 1 then
return "1"
end if
for i = 2 to count
output += i.tostring()
end for
output = output.reverse() + "1" + output
return output
end sub

Zoiets?
 
@wicherh: Ik heb je pseudocode even geconverteerd naar VB.NET.

[CPP] Private Sub CreatePyramid(rows As Integer)
Dim empty As String = ""
For i = 1 To rows
Console.WriteLine(empty.PadRight(rows - i, " ") + createreeks(i))
Next
End Sub

Public Function CreateReeks(count As Integer)
Dim output As String = ""
If count = 1 Then
Return "1"
End If
For i = 2 To count
output += i.ToString()
Next
Dim Chars As New List(Of Char)
For Each item In output
Chars.Add(item)
Next
Dim temp As String = ""
For i = output.Length - 1 To 0 Step -1
temp &= Chars.Item(i)
Next
output = temp & "1" + output
Return output
End Function[/CPP]

(De 'Reverse' methode bestaat niet, daarom is de code langer geworden ;) )
 
Laatst bewerkt:
'k Heb het alleen maar geconverteerd ;)
 
mmm ziet er naar uit dat jouw reverse methode niet zo goed werkt.
Van http://www.dreamincode.net/code/snippet1521.htm
Code:
Private Sub CreatePyramid(rows As Integer)
        Dim empty As String = ""
        For i = 1 To rows
            Console.WriteLine(empty.PadRight(rows - i, " ") + createreeks(i))
        Next
    End Sub
 
    Public Function CreateReeks(count As Integer)
        Dim output As String = ""
        If count = 1 Then
            Return "1"
        End If
        For i = 2 To count
            output += i.ToString()
        Next
 
        Return ReverseString(output) + "1" + output
    End Function
Public Function ReverseString(ByRef strToReverse As String) As String
    Dim result As String = ""
    For i As Integer = 0 To strToReverse.Length - 1
        result += strToReverse(strToReverse.Length - 1 - i)
    Next
    Return result
End Function

Dit zou moeten werken?

De vb .net code is van JoZ1
 
Klopt inderdaad, had dit moeten zijn:

[CPP]For i = output.Length - 1 To 0 Step -1[/CPP]

Kan dus ook zo:

[cpp]Private Sub CreatePyramid(rows As Integer)
Dim empty As String = ""
For i = 1 To rows
Console.WriteLine(empty.PadRight(rows - i, " ") + createreeks(i))
Next
End Sub

Public Function CreateReeks(count As Integer)
Dim output As String = ""
If count = 1 Then
Return "1"
End If
For i = 2 To count
output += i.ToString()
Next
Dim Chars As New List(Of Char)
For Each item In output
Chars.Add(item)
Next
Dim temp As String = ""
For i = output.Length - 1 To 0 Step -1
temp &= Chars.Item(i)
Next
output = temp & "1" + output
Return output
End Function[/cpp]

Maar volgens mij scheelt het niet zo qua lengte ;)
 
Laatst bewerkt:
One liner, lol.
PHP:
Console.WriteLine("1{0}212{0}32123{0}4321234{0}543212345", Environment.NewLine)
 
@CaptainBri: Het wordt alleen wel lastig als je t/m 30 in de piramide wilt hebben :P.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan