Datentypen Felder mit Potenzen

WI'ler

Mitglied
Hallo liebe Gemeinde,

leider komme ich beim Lernen nicht mehr weiter.

Aufgabenstellung hier


1) Wie müsste ich korrekterweise das Feld erstellen?

2) Wie kriege ich die Potenzen in dem Feld ausgegeben ohne die Java-Bibliothek (math.pow) zu benutzen?

Lieben Dank ;)
 

Jodo

Aktives Mitglied
Moin,
wie weit bist du denn selbst gekommen? An Stelle von
Code:
Math.pow()
bietet sich notfalls auch die gute alte Multiplikation an ;)
 

WI'ler

Mitglied
Fehlen tut mir gerade nur der Algo zur Berechnung der Potenzen...

Java:
public static void main(String[] args) {
    	
    	int[][] table = new int [5][5];
		for (int i = 0; i < table.length; i++)
		{
			for (int j = 0; j < table[i].length; j++)
			{
				table[i][j] = ?????;
				System.out.print(table[i][j] + " ");
			}
		System.out.println();
		}
}
 
W

Wishmaster51

Gast
Fehlen tut mir gerade nur der Algo zur Berechnung der Potenzen...
Da keine Klassenbibliotheken verwendet werden dürfen, kannst du zB b^n durch n-fache Multiplikation von b berechnen. Dazu kannst du eine Unterfunktion schreiben.

PS: Der Hauptalgorithmus soll in einer Funktion
Code:
static int[][] erzeugePTabelle(int n)
stehen.
 

HimBromBeere

Top Contributor
Wie wär´s mit einer rekursiven Methode Potenz?

Java:
double potenz(double number, double exp) {
    if (exp == 1) return number;
    return number * potenz(number, exp - 1);
}

[EDIT]Alternativ kannst du auch eine rekursive Zahlenreihe der Form
Code:
f(n + 1) = f(n) * n
verwenden, also das i-te Feld deiner Tabelle einfach aus dem i-1-ten berechnen. Dafür musst du nur den Anfangswert (also tabelle[0]) angeben[/EDIT]
 
Zuletzt bearbeitet:

WI'ler

Mitglied
Ich bin gerade noch dabei es auszutesten, daher belasse ich alles in der main-Methode...

Funktionieren tut dieser einfache Code. Muss es jetzt erstmal verstehen.
Java:
public static void main(String[] args) {
    	
    	int[][] pascal = new int [5][5];
		for (int i = 0; i < pascal.length; i++)
		{
			int potenz=1;
			for (int j = 0; j < pascal[i].length; j++)
			{
				potenz=potenz*(i+1);
                System.out.print(potenz);      
                System.out.print("\t");
			}
		System.out.println();
		}
    }

@HimBrombeere,

ich will den Code so kurz wie möglich halten. Zeit ist Geld :toll:

EDIT: Wobei ich gerade merke, dass mein Feld dann völlig überflüssig ist. Ich muss das Ganze in das Feld reinschreiben, was ich vorher erstellt habe.
 
Zuletzt bearbeitet:
D

DoublePotenz?

Gast
Java:
double potenz(double number, double exp) {
    if (exp == 1) return number;
    return number * potenz(number, exp - 1);
}

Also auch wenn ich mir aus der theoretischen Mathematik schon sowas vorstellen kann wie "3.14^2.178" meinst du nicht das "double" zumindest für diese Aufgabe "etwas" übertrieben ist ?
 

HimBromBeere

Top Contributor
EDIT: Wobei ich gerade merke, dass mein Feld dann völlig überflüssig ist. Ich muss das Ganze in das Feld reinschreiben, was ich vorher erstellt habe.
Und was hindert dich daran, statt
Java:
System.out.print(potenz);      
System.out.print("\t");
einfach
Java:
pascal[i][j] = pascal[i][j - 1] * pascal[i][0]
zu schreiben?

[EDIT]Ja OK, double exponent ist wirklich bissl sinnfrei hier.[/EDIT]
 

WI'ler

Mitglied
Java:
pascal[i][j] = pascal[i][j - 1] * pascal[i][0]

Das wird doch nicht klappen, oder? Wenn j = 0 ist, wird die Tabellengröße "unterschritten".
 

WI'ler

Mitglied
Ach was... manmanman, ihr macht´s mir mit Absicht schwer, oder :D
Ich meine das Zählen beim Durchlaufen der Schleife. Dass pascal[0..4][0] natürlich entsprechend gefüllt werden müssen (mit 1 bis 5), ist schon klar...

Und wie müsste man das machen :applaus:

Ich mache es Dir nicht besonders schwer, sondern habe eine schlaflose Nacht hinter mir, die ich gleich hoffentlich mit dieser Aufgabe zu Ende bringen möchte. :D Leider klappt es aber nicht besonders gut, da meine Gehirnzellen wohl nicht mehr mitspielen. :D

Und Danke für Eure Hilfe!
 

Plopo

Bekanntes Mitglied
Ist es denn möglich, den Start des Arrays zu verändern?
Java:
if(j==0)
{
   pascal[i][j] = pascal[i][0] * pascal[i][0]
}
else
{
   pascal[i][j] = pascal[i][j - 1] * pascal[i][0]
}

Oder du setzt in deiner For-Schleife "j=1", druchläufst bis "<= array.length", dein aktueller Array Index ist halt immer "j-1" und zum berechnen nutzt du "j".
 
Zuletzt bearbeitet:
W

Wishmaster51

Gast
Es ist überhaupt nicht notwendig, die Grenzen des Arrays zu verändern:
Java:
static int[][] erzeugePTabelle(int n)
{
        if(n<1)
        {
                return null;
        }
        int[][] pascal = new int [n][n];
        for (int i = 0; i < pascal.length; i++)
        {
            pascal[i][0] = i;
            for (int exp = 1; exp < pascal[i].length; exp++)
            {
                pascal[i][exp] =  i*pascal[i][exp-1];
            }
        }
        return pascal;
}
 
Zuletzt bearbeitet von einem Moderator:

WI'ler

Mitglied
@WishMaster51

Ein Array startet bekanntlich bei 0.
Deshalb erfolgt die Ausgabe in der Form:

0 0 0 0 0
2 4 8 16 32
...

Wie kann ich es ausbessern?
 

WI'ler

Mitglied
Ich dachte an sowas wie
Java:
for (int i = 0; i < 5; i++) pascal[i][0] = i + 1;

for (int i = 0; i < 5; i++) {
    for (int j = 1; j < 5; j++) {
        pascal[i][j] = pascal[i][j - 1] * pascal[i][0]
    }
}

Erstmal ein ganz ganz großes DANKE SCHÖN an alle, die an der Lösung beteiligt waren...

@HimBromBeere

Du hast es geschafft... und ich somit auch für den ersten Teil :applaus:

Gefällt mir am besten die Lösung... und funktioniert anstandslos...
 
W

Wishmaster51

Gast
@WishMaster51

Ein Array startet bekanntlich bei 0.
Deshalb erfolgt die Ausgabe in der Form:

0 0 0 0 0
2 4 8 16 32
...

Wie kann ich es ausbessern?
Bei dir fehlt die Reihe mit eins.

In diesem Fall rechnest du einfach die Indizes um, was auch nicht sonderlich schwer ist:
Java:
static int[][] erzeugePTabelle(int n)
{
        if(n<1)
        {
                return null;
        }
        int[][] pascal = new int [n][n];
        for (int i = 0; i < pascal.length; i++)
        {
            pascal[i][0] = (i+1);
            for (int exp = 1; exp < pascal[i].length; exp++)
            {
                pascal[i][exp] =  (i+1)*pascal[i][exp-1];
            }
        }
        return pascal;
}
 
W

Wishmaster51

Gast
PS: In der Aufgabenstellung scheint ein Fehler zu sein: In 2. Reihe, 5. Spalte müsste 2^5=32 hin :D
 

WI'ler

Mitglied
PS: In der Aufgabenstellung scheint ein Fehler zu sein: In 2. Reihe, 5. Spalte müsste 2^5=32 hin :D

Habe ich auch bemerkt. Ist eine alte Klausur... vll hat sich ja der eine oder andere beschwert :D

Ich gönn' mir jetzt erstmal eine Ruhepause und werde dann heute Abend mit weiteren Fragen nerven (ist nicht mein Hobby, nein :lol:)...

Nochmals vielen Dank für die engagierte Hilfe aller Beteiligten ;) und noch einen angenehmen Tag
 

WI'ler

Mitglied
Sorry für die späte Antwort... Habe mich erst jetzt wieder rangesetzt.
Das Problem war einfach nur meine Schlaflosigkeit. Da habe ich wohl nicht mehr viel
wahrgenommen. Konnte das Problem mit einer einfachen if-Abfrage lösen.

Die Ausgabe fing erst in der zweiten Spalte an:

1 1 1 1
4 8 16 32
...

Folgenderweise gelöst:

Java:
public class Potenztabelle {
    
    public static void main(String[] args) {
    	
    	erzeugePTabelle(5);
    }
    
 	static int[][] erzeugePTabelle(int n)
	{
		int[][] pascal = new int [n][n];
        
         for (int i = 0; i < n; i++) 
        	pascal[i][0] = i + 1;
 
			for (int i = 0; i < n; i++) 
			{
    			for (int j = 0; j < n; j++) {
    				if(j==0)
    				{
    					pascal[i][j] = pascal[i][j];
    				}
    				else
    				{
    					pascal[i][j] = pascal[i][j - 1] * pascal[i][0];	
    				}
        			System.out.print(pascal[i][j] + " ");
    			}
    		System.out.println("");
			}
			return pascal;
	}
}
 

HimBromBeere

Top Contributor
[JAVA=18]if(j==0)
{
pascal[j] = pascal[j];
}[/code]

Was soll denn der Käse? Abgesehen davon, dass eine Zuweisung der Form
Code:
x = x
völlig sinnlos ist, brauchst du die if-Anweisung auch nicht. Du musst doch nur die innere der beiden for-Schleife statt von 0 von 1 anfangen lassen mit zählen:
[JAVA=17]
for (int j = 1; j < 5; j++) {...}[/code]
 

WI'ler

Mitglied
Was soll denn der Käse? Abgesehen davon, dass eine Zuweisung der Form
Code:
x = x
völlig sinnlos ist, brauchst du die if-Anweisung auch nicht. Du musst doch nur die innere der beiden for-Schleife statt von 0 von 1 anfangen lassen mit zählen:
[JAVA=17]
for (int j = 1; j < 5; j++) {...}[/code]

1=) Das ist natürlich überflüssig, aber für mein Verständnis besser, als wenn es einfach leer steht. (Doppelt gemoppelt)

2=) Klappt leider nicht... Es werden nur die letzten 4 Spalten angezeigt. Spalte 1 fehlt...
 

HimBromBeere

Top Contributor
2=) Klappt leider nicht... Es werden nur die letzten 4 Spalten angezeigt. Spalte 1 fehlt...
Achja, du willst die Zeilen ja auch jedes Mal gleich mit ausgeben, dann musst du natürlich von 0 zählen, stimmt. Aber dann kannst du auch statt dieser seltsamen if-Anweisung eine andere nehmen:
Java:
if (j != 0) pascal[i][j] = pascal[i][j - 1] * pascal[i][0];
Du testest also nicht auf
Code:
==0
sondern auf
Code:
!= 0
 
W

Wishmaster51

Gast
Sorry für die späte Antwort... Habe mich erst jetzt wieder rangesetzt.
Das Problem war einfach nur meine Schlaflosigkeit. Da habe ich wohl nicht mehr viel
wahrgenommen. Konnte das Problem mit einer einfachen if-Abfrage lösen.

Die Ausgabe fing erst in der zweiten Spalte an:

1 1 1 1
4 8 16 32
...
Das ist schlicht und einfach falsch:
Java:
public class Pascal
{
	static int[][] erzeugePTabelle(int n)
	{
		if (n < 1)
		{
			return null;
		}
		final int[][] pascal = new int[n][n];
		for (int i = 0; i < pascal.length; i++)
		{
			pascal[i][0] = (i + 1);
			for (int exp = 1; exp < pascal[i].length; exp++)
			{
				pascal[i][exp] = (i + 1) * pascal[i][exp - 1];
			}
		}
		return pascal;
	}

	public static void main(final String[] args)
	{
		final int[][] quad = erzeugePTabelle(7);
		for (final int[] row : quad)
		{
			for (final int v : row)
			{
				System.out.print(v + "\t");
			}
			System.out.println();
		}
	}
}
Liefert hier
1 1 1 1 1 1 1
2 4 8 16 32 64 128
3 9 27 81 243 729 2187
4 16 64 256 1024 4096 16384
5 25 125 625 3125 15625 78125
6 36 216 1296 7776 46656 279936
7 49 343 2401 16807 117649 823543
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
U HILFE! - per ActionListener Felder enablen....... Java Basics - Anfänger-Themen 5
M Werte in Felder speichern und geordnet ausgeben Java Basics - Anfänger-Themen 8
A Felder: arithmetisches und geometrisches Mittel Java Basics - Anfänger-Themen 3
L Datentypen Deklarierte Felder einer Generic Klasse bestimmen Java Basics - Anfänger-Themen 7
Elyt Bei Monopoly werden Felder übersprungen Java Basics - Anfänger-Themen 2
L Listen und Felder Java Basics - Anfänger-Themen 2
neerual Int-Felder erzeugen Java Basics - Anfänger-Themen 16
P Felder König array Java Basics - Anfänger-Themen 6
T Art 4 Felder Matrix Memory Java Basics - Anfänger-Themen 2
P Zugriff auf Felder in ArrayList Objekten Java Basics - Anfänger-Themen 2
D Felder Java Basics - Anfänger-Themen 2
D Übung Felder java Error kompilieren Java Basics - Anfänger-Themen 4
M Felder leer - überprüfen? Java Basics - Anfänger-Themen 2
S reflection und felder Java Basics - Anfänger-Themen 12
X Verknüpfte Excel Felder mitändern Java Basics - Anfänger-Themen 6
Z Erste Schritte 9x9 Felder Erzeugen+Aufrufen Java Basics - Anfänger-Themen 1
S Wie instanziert man Felder? Java Basics - Anfänger-Themen 11
V Zwei Felder Adderen Java Basics - Anfänger-Themen 2
W Methoden Falsche Felder von Methode belgegt Java Basics - Anfänger-Themen 14
M Spielfeld mit 10x10 Felder Java Basics - Anfänger-Themen 13
E Felder bei falscher Eingabe leeren Java Basics - Anfänger-Themen 8
S Felder mit Variablen/Tabellen verknüpfen! Java Basics - Anfänger-Themen 3
M Felder mit Methode verändern Java Basics - Anfänger-Themen 11
C Erste Schritte felder, die public final sind Java Basics - Anfänger-Themen 6
B Frage zur Effizienz - alle Array-Felder initialisieren oder jedes Feld auf null prüfen? Java Basics - Anfänger-Themen 4
C Felder(Größte Zahl, Index) Java Basics - Anfänger-Themen 6
K Felder Java Basics - Anfänger-Themen 5
M 3 Felder, Barcode, reinschreiben in die DB Java Basics - Anfänger-Themen 30
D Datentypen Felder: Deklaration und Initialisierung Java Basics - Anfänger-Themen 5
C Java Felder bearbeiten Hilfe Java Basics - Anfänger-Themen 4
H Felder mit unterschiedl. Typen sortieren Java Basics - Anfänger-Themen 5
B n-dimensionale Felder in m-dimensionale Felder konvertiert Java Basics - Anfänger-Themen 30
H felder vergleichen Java Basics - Anfänger-Themen 6
F Felder von aufrufender Klasse ändern Java Basics - Anfänger-Themen 16
A Felder Java Basics - Anfänger-Themen 7
A Mehrdimensionale Felder Java Basics - Anfänger-Themen 18
C Felder im Dialog zurücksetzen Java Basics - Anfänger-Themen 3
E Wechselnde Felder erzeugen Java Basics - Anfänger-Themen 15
maddin86 Eine Methode für ein- und zweidimensionale double Felder als Parameter? Java Basics - Anfänger-Themen 5
A Felder- Minimum/Maximum Java Basics - Anfänger-Themen 2
D Felder Java Basics - Anfänger-Themen 7
D Felder Java Basics - Anfänger-Themen 2
T Border Layout alle mittleren felder gleich groß Java Basics - Anfänger-Themen 3
C Speicherverwaltung für Felder Java Basics - Anfänger-Themen 8
S EINDIMENSIONALE FELDER? Java Basics - Anfänger-Themen 23
G 3. Aufgaben und komme nicht weiter (Felder, Methoden) Java Basics - Anfänger-Themen 3
M Felder (Wo liegt der Fehler?) Java Basics - Anfänger-Themen 2
D Wie werden Felder grau? Java Basics - Anfänger-Themen 26
S generische Felder Java Basics - Anfänger-Themen 2
A Felder Java Basics - Anfänger-Themen 3
D String mit split teilen und leere Felder behalten Java Basics - Anfänger-Themen 4
R Felder unterschiedlichen Typs Java Basics - Anfänger-Themen 9
J 2 Felder aus DB selektieren u. in JList - eines verstecken? Java Basics - Anfänger-Themen 7
T Suche über mehrere Felder value = key = value Java Basics - Anfänger-Themen 3
B Array doppelt Felder löschen Java Basics - Anfänger-Themen 27
B clone(), Clonable und Felder von Interfacetypen Java Basics - Anfänger-Themen 3
G Felder kopieren Java Basics - Anfänger-Themen 8
G Felder-Länge Java Basics - Anfänger-Themen 2
G Felder zurückgeben? Java Basics - Anfänger-Themen 3
C Früheste Datum aus 3 Felder Java Basics - Anfänger-Themen 20
M Felder innerhalb eines Arrays vergleichen Java Basics - Anfänger-Themen 2
D Felder vergleichen Java Basics - Anfänger-Themen 14
D Verbindung von Methoden und Felder Java Basics - Anfänger-Themen 3
A Aus dem menü heraus andere Felder bearbeiten Java Basics - Anfänger-Themen 2
S Statische Felder - statische Methoden Java Basics - Anfänger-Themen 2
G variable felder in java? geht das? Java Basics - Anfänger-Themen 4
Alen123 Potenzen in Schleifen Java Basics - Anfänger-Themen 26
Q Prüfen ob Zahl als Summe von Potenzen dargestellt werden kann. Java Basics - Anfänger-Themen 20
V Erste Schritte Potenzen b^n mittels Schleife ermitteln Java Basics - Anfänger-Themen 7
Z Potenzen Java Basics - Anfänger-Themen 10
B Potenzen ohne Math.pow Java Basics - Anfänger-Themen 4
T Erste Schritte Funktionsweise Potenzen in Java Java Basics - Anfänger-Themen 3
P Methoden Rekursive Methode für Potenzen Java Basics - Anfänger-Themen 2
S beliebige Potenzen Java Basics - Anfänger-Themen 11
A Potenzen ohne math.pow Java Basics - Anfänger-Themen 1
A Potenzen, Exponenten, Basis Java Basics - Anfänger-Themen 3
W Hilfe bei Schleifenprogrammierung mit Potenzen Java Basics - Anfänger-Themen 5
C Mit Potenzen rechnen "Problem" Java Basics - Anfänger-Themen 3
F Große Potenzen berechnen Java Basics - Anfänger-Themen 6
S Programm mit Potenzen Java Basics - Anfänger-Themen 9
P Exponenten bei Potenzen multiplizieren Java Basics - Anfänger-Themen 4
G Potenzen Java Basics - Anfänger-Themen 8
P Potenzen von 2 anzeigen lassen Java Basics - Anfänger-Themen 4
B for- und while anweisung - 2er Potenzen generieren Java Basics - Anfänger-Themen 6
B Problem mit Potenzen/ Double/ Bestimmung der Eulerzahl Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben