Matrizenproblem

manuel90

Mitglied
Guten Tag,
ich hätte ein kleines Problem zu einer Aufgabe aus meiner Schule.
Und zwar wurde uns folgender Code zur Verfügung gestellt :

Java:
package grundlagen;
import static einaus.EinAusgabe.*;

public class MatrizenAddition {
	public static void main(String[] args) {
		int zeilen, spalten, i, j;
		double aad1[][], aad2[][], aad3[][];
		
		p("\nAnzahl Zeilen: "); zeilen = liesInt();
		p("Anzahl Spalten: "); spalten = liesInt();
		pln();

		aad1 = new double[zeilen][spalten];
		aad2 = new double[zeilen][spalten];
		aad3 = new double[zeilen][spalten];
		
		// Eingabe der Matrizen
		pln("Matrix A:\n");
		for (i = 0; i < zeilen; i++) {
			for (j = 0; j < spalten; j++) {
				System.out.printf("Feld[%d][%d] = ", i + 1, j + 1);
				aad1[i][j] = liesDouble();
			}
			pln();
		}
		
		pln();
		
		pln("Matrix B:\n");
		for (i = 0; i < zeilen; i++) {
			for (j = 0; j < spalten; j++) {
				System.out.printf("Feld[%d][%d] = ", i + 1, j + 1);
				aad2[i][j] = liesDouble();
			}
			pln();
		}
		
		pln();
		
		// Addition der Matrizen
		for (i = 0; i < zeilen; i++) {
			for (j = 0; j < spalten; j++) {
				aad3[i][j] = aad1[i][j] + aad2[i][j];
			}
		}
		
		// Ausgabe der Ergebnismatrix
		// hier gezeigt mittels einer foreach-Schleife 
		pln();
		pln("Matrix A + Matrix B:\n");
		for (double[] dZeile : aad3) {
			for (double d: dZeile) {
				System.out.printf("%6.2f ", d);
			}
			pln();
		}		
	}
}

Aufgabe :

In der Klasse MatrizenAddition finden Sie die Ausgabe der Ergebnismatrix unter Verwendung einer
foreach-Schleife.
Ändern Sie diese Ausgabe so ab, dass die vollständige Addition ausgegeben wird. Z.B. so:

Anhang anzeigen Matrix.bmp

Die Matrizen müssen dabei wie im Bild angeordnet sein und das + und = in der untersten Zeile
stehen.

Nun habe ich stundenlang gerätselt und komme einfach nicht weiter.
Ich habe folgendes versucht :
Java:
for(i = 0; i < zeilen; i++) {
			for(j = 0; j < spalten; j++) {
				pf("%6.2f%6.2f%6.2f",aad1[i][j],aad2[i][j],aad3[i][j]);
				
			}
		pln();
		}

Ich glaube, dass ich mit einer foreach-Schleife nicht viel anfangen kann, deswegen habe ich eine normale for-Schleife verwendet.
Dies ergab aber auch keine richtige Lösung, weil die Zahlen dann in der falschen Reihenfolge stehen.

Könntet ihr mir etwas auf die Sprünge helfen?

Mit freundlichen Grüßen
manuel90
 

knilch

Bekanntes Mitglied
Hi,
Hier mal ein Beispiel: (jedoch ohne Formatierung etc...)
Java:
public void test() {
	double[][] A = new double[][] {{1,2}, {3,4}};
	double[][] B = new double[][] {{5,6}, {7,8}};
	
	for (int i = 0; i < A.length; i++) {
			if(i < A.length -1)
				System.out.println(A[i][0] + " " + A[i][1] + "   " + B[i][0] + " "+ B[i][1]  + "     " + (A[i][0] + B[i][0]) + "  " + (A[i][1] + B[i][1]) );
			else
				System.out.println(A[i][0] + " " + A[i][1] + " + " + B[i][0] + " " + B[i][1] + "  =  " + (A[i][0] + B[i][0]) + "  " + (A[i][1] + B[i][1]) );
	}	
}
 
Zuletzt bearbeitet:

manuel90

Mitglied
Genau so etwas habe ich auch schon ausprobiert. Also das mit den Operatoren in der letzten Zeile habe ich auch hinbekommen. Nur ist die Größe der Matrizen nicht vordefiniert und so weiß ich nicht genau wie ich das machen soll ohne, dass alles wieder in der falschen Reihenfolge ist.
 

manuel90

Mitglied
Das Programm läuft nun :D
Ist mir heute morgen wie Schuppen von den Augen gefallen :lol:

Java:
for(i = 0; i < (zeilen); i++) {
			if(i < zeilen-1){
				for(j = 0; j < spalten; j++) {
					pf("%6.2f",aad1[i][j]);
				}
				p("  ");
				for(j = 0; j < spalten; j++) {
					pf("%6.2f",aad2[i][j]);
				}
				p("  ");			
				for(j = 0; j < spalten; j++) {
					pf("%6.2f",aad3[i][j]);
				}
				}
			else{
				for(j = 0; j < spalten; j++) {
					pf("%6.2f",aad1[i][j]);
				}
				p(" +");
				for(j = 0; j < spalten; j++) {
					pf("%6.2f",aad2[i][j]);
				}
				p(" =");				
				for(j = 0; j < spalten; j++) {
					pf("%6.2f",aad3[i][j]);
				}
				}
		pln();
		}

Oder würde es noch einfacher gehen?

Mit freundlichen Grüßen
manuel90
 

Oben