Zahlenpyramide

Status
Nicht offen für weitere Antworten.

Majin_Clodan

Mitglied
Moin Leute,
also diesmal nervt mich eine Übung, die sich Zahlenpyramide nennt, gegen welche ich schon seit freitag zu kämpfen habe. o_O
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. o_O

Also ich habe bis jetzt das:

Code:
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? o_O 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
 
S

SlaterB

Gast
> 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

Mitglied
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

Mitglied
Hi!

Majin_Clodan hat gesagt.:
[...]
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.

[...]

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!

[...]

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
 
S

SlaterB

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

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

freak4fun

Mitglied
Code:
    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

Bekanntes Mitglied
Hallo,

hier mal meine Lsg.:

Code:
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.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen

Ähnliche Java Themen

Neue Themen


Oben