aGe Geschrieben 9. November 2009 Geschrieben 9. November 2009 Hallo, bin ziemlich neu in vb.net und hab hier etwas, dass ich irgendwie nicht richtig zusammenbekomme.. also ein konsolenprojekt, wo steht, geben sie die hoehe der pyramide ein.. bei eingabe 5 sollte z. B. kommen.. 5 44 333 2222 11111 (formatierung stimmt jetzt nicht ganz..) ich bekomme gerade mal ne pyramide hin, wenn ich gar keine hoehe eingeben lasse sondern nur das in einem array mache.. und dann ist die pyramide aber auch nur eine halbe.. Sub Main() 'Dim zahl As Integer Dim zaehler As String = "54321" Dim i As Integer Dim j As Integer Dim Ergebnis As String = "" 'Console.WriteLine("Geben sie die Hoehe der Pyramide ein") 'zahl = Console.ReadLine() ' While zaehler < zahl 'zaehler = zaehler + 1 ' äußere Schleife For i = 0 To 4 ' innere Schleife For j = 0 To i Ergebnis += zaehler.Chars(i) Next j Ergebnis += vbNewLine Next i ' End While Console.WriteLine(Ergebnis) End Sub hab die erweiterungen auskommentiert.. der aktuelle code gibt hald eine halbe pyramide bis 5 aus.. Zitieren
streffin Geschrieben 9. November 2009 Geschrieben 9. November 2009 (bearbeitet) Das giebt ein Dreieck, meinst du das mit "halber Pramide" ? Das mit deinem zaehler String macht jetzt auch nicht unbedingt Sinn, wenn du in ner Schleife durch gehst, for i = 1 to x .... Dann machste um an deinen Char ("1") zu kommen einfach nen Typecast von dem Integer 1 auf den String "1". Wenn du da jetzt ne wirkliche Pyramide, im anschaulichen Sinne Pyramide, ausgeben willst dann nimm dir am besten bei sowas erst nen Blatt Papier und zeichne dir mal auf was du haben möchtest. also, Gleichschencklige Pyramide : 5 444 33333 2222222 111111111 Das wäre imo deine angestrebte Pyramide. Wenn du da durchzählst : Zeile | Anzahl Zeichen 1 | 1 2 | 3 3 | 5 4 | 7 5 | 9 So, du willst ja die in dem Fall 5 oben stehn haben, das heist, du denkst hier nicht Pyramide, du denkst hier Rechteck. Du willst ja die 5 in der Mitte der Pyramide stehen haben, nicht am linken Rand. Die Anzahl Zeichen die du als breite brauchst kannst du dir recht einfach herleiten und errechnen : Zeile 1 ist 1 zeichen, Zeile 2 sind 3, Zeile 3 sind 5 1+2 x i, für i (0....4) für den Wert 5 Das wäre deine "Formel" (ich mach hier ganz bestimmt keine Screenshots von nem summenzeichen). Also für 5 wäre dass dann 1+ 2x4 = 9 Zeichen breite. Das ist das erste was du für die innere Schleife brauchst. Also, position der 5 in dieser Pyramide. Erste Zeile, also willst du von 9 Zeichen, 8 Leerzeichen, und 1x die 5, und du brauchst die Position 9 (das hast du vorher errechnet) - 1 zeichen das ich 'füllen' möchte, = 8 Leerzeichen. 8/2 = 4, d.h. 4 leerzeichen, 1x 5, 4 leerzeichen. 2. Zeile 9 - 3 (jetzt kommen die 4er) = 6 6/2 = 3, 3x Leerzeichen 3x 4, 3x Leerzeichen usw Ich will jetzt nicht weiter gehn, weil sonst kann ich dir gleich den Quellcode schicken, aber ich denk das sollte ein kräftiger schubs in die Richtung sein, ohne das ich dir aufs brot schmier wie du die Logik in nen Algorythmus giest. kleine Anmerkung, die Leerzeichen rechts deiner Zahlenreihe, die kannst du im String natürlich weglassen, es ging mir eher um das "Stell dir das ding als Rechteck vor, und geh wie mit einem Rechteck damit um, denk nicht an Dreieck oder Pyramide" als Denkansatz Viel Spass, und sei froh das du kein Taschenrechner schreiben musst Gruß Sven Bearbeitet 9. November 2009 von streffin Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.