# Zahlenpyramide



## Majin_Clodan (5. Okt 2008)

Moin Leute,
also diesmal nervt mich eine Übung, die sich Zahlenpyramide nennt, gegen welche ich schon seit freitag zu kämpfen habe. 
Also es soll bei der Pyramide das folgende Ergebnis entstehen:
1
2 3
4 5 6
7 8 9 10
11 12 13 14 15
16 17 18 19 20 21
.
.
.
Eine Anmerkung wäre dafür noch, dass der Benutzer angeben kann, wie viele Zeilen es werden sollen. Aufgrund dieser anmerkung aber find ich so richtig keine Lösung, weil ich sonst bei einer begrenzten anzahl einfach mehrere If-Aneisungen geschrieben hätte. 

Also ich habe bis jetzt das:


```
import java.util.*;

class Aufgabe38
{
	public static void main(String[] arg)
	{
		Scanner sc = new Scanner(System.in);
		
		System.out.print("Gib die Anzahl der auszugebenen Zeilen an: ");
		int a = sc.nextInt();
		
		
		
		for ( int b=0; b<=a; b++)
		{
		
	}
}
```

Meine Überlegungen sindn un folgende:
Das Problem ist ja nur der Zeilenumbruch. Es müsse immer ein Zeilenumbruch entstehen, wenn die for-Schleife immer ein bestimmtes Maß durchlaufen hätte. Ich meine damit, es dürfe nur einer nach "3" oder "6" entstehen.

Ich weiß außerdem, wie sich die Pyramide zahlenmäßig steigert. 
Erläuterung für die linke Steigerung:
1-2-4-7-11-16-...
hierbei steigert es sich immer um 1 mehr als vorher
Erläuterung für die rechte steigerung:
1-3-6-10-15-...
Hierbei fängt die Steigerung bei 2 an!

Ich weiß nun aber nicht, in wie fern mir das was bringen soll. Ich habe schon vieles probiert, aber entweder ich bekomme nur eine Reihe oder eine Zeile oder es existieren an falschen Orten die Zeilenumbrüche d.h. ich glaube immer, eine richtige Formel gefunden zu haben mit einer weiteren for-Schleife oder auch if-Anweisung, aber dann sieht alles doch wieder nur seltsam aus. :'(

Kann mir jemand helfen?  Wie ihr seht, habe ich mich auch daran versucht, aber ich schaffe es einfach nicht. -.- Vielleicht fehlt mir auch nur ein Tipp o.ä. 

Vielen Dank schonmal im vorraus. 


MFG Majin_Clodan


----------



## SlaterB (5. Okt 2008)

> Scanner sc = new Scanner(System.in);

>      System.out.print("Gib die Anzahl der auszugebenen Zeilen an: ");
>      int a = sc.nextInt(); 

es ist ja schön und gut, wenn man etwas schon kann und für die neue Aufgabe wieder coden kann,
aber bringt dich das wirklich weiter bei dem Problem?

bei jedem der 30 Programmtests musst du nun eine Zahl eintippen, da wird man doch verrückt,
int a = 7;
geht doch vorerst genauso..

------


gib alle Zahlen von 1 bis a in einer Schleife aus,
als erstes in einer Zeile, das ist schonmal nicht schlecht,

dann musst du nur noch an geeigneter Stelle Zeilenumbrüche (\n) einfügen,
den ersten nach der ersten Zahl, den nächsten nach der dritten usw. die Steigerung kennst du ja schon,
kannst in der Schleife einen Block einfügen

if (zeit für Zeilenumbruch)
Zeilenumbruch
nächste Zeilenumbruchzeit setzen
}


----------



## Majin_Clodan (5. Okt 2008)

Ja, das mit dem einfügen der "zeit für einen zeilenumbruch" ist ja logisch, aber wie kommt man formelmäßig auf diesen Wert? 
Das wäre ja dan sogar schon alles wie ich gerade bemerke.  Hab ich wohl wieder komplizierter gedacht, aber daür bin ich ja ein Anfänger. xD
Also wie gesagt, wenn ich die Formel wüsste, wäre die Aufgabe gelöst. 


MFG Majin_Clodan


----------



## transsib (5. Okt 2008)

Hi!



			
				Majin_Clodan hat gesagt.:
			
		

> [...]
> Also es soll bei der Pyramide das folgende Ergebnis entstehen:
> 1
> 2 3
> ...



Was meinst Du denn mit Steigerung? In Deinem Beispiel sind die Zahlen doch immer fortlaufend, nur, dass eben in jeder folgenden Zeile eine Zahl mehr steht.

Wenn ich mir das so ansehe, musst Du jede Zeile mit der letzten Zahl der vorherigen Zeile+1 beginnen und in die Zeile dann Anzahl+1 Zeichen schrieben. Das ganze wiederholst Du so oft, bis die gewünschte Zeilenzahl erreicht ist.

Ich bin selbst noch Anfänger, würde aber mal behaupten, dass sich das mit zwei for-Schleifen erledigen lässt. Sicherlich antwortet aber auch noch einer der Profis.

Viele Grüße,

Oliver


----------



## SlaterB (5. Okt 2008)

> aber wie kommt man formelmäßig auf diesen Wert?

du hast doch schon zwei Formeln aufgestellt im ersten Posting, eine davon ist es


----------



## freak4fun (5. Okt 2008)

```
public static void main(String[] args) {
        int zahl = 1;
        int n = 0;
        while (n < 10){
          for (int i = 0; i < n; i++){
            System.out.print(zahl + " ");
            zahl++;
          }
          System.out.print("\n");
          n++;
        }
    }
```


----------



## till123 (5. Okt 2008)

Hallo,

hier mal meine Lsg.:


```
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Test1 {

	public static void main(String[] arg) throws IOException
	{
		int anzahlDerZeilen;
		int aktuelleZahl = 1;
	
		//Anzahl der Zeilen festlegen
		System.out.print("Aus wieviele Zeilen soll die Pyramide bestehen?"); 
		BufferedReader ir = new BufferedReader (new InputStreamReader(System.in));
		anzahlDerZeilen = Integer.valueOf(ir.readLine());
		
		//jede Zeile muss durchlaufen werden
		for(int i =0; i<anzahlDerZeilen; i++)
		{
			//Zeile mit entsprechenden Werten füllen
			for(int j = 0; j< i; j++)
				{
					System.out.print(aktuelleZahl + " ");
					aktuelleZahl++;
				}
			//nach jeder Zeile ein Zeilenumbruch hinzufügen
			System.out.print("\n");
		}
	}
}
```

Denke, dass es die Aufgabenstellung löst.


----------

