Dr. Ekkart Kindler FG Softwaretechnik Institut für Informatik Technische Informatik für Ingenieure Winter 2006/2007 – Übungsblatt Nr. 8 12. Dezember 2006 Übungsgruppenleiter: K. Hojenski M. Meyer E. Münch S. Pook A. Znamenshchykov D. Travkin Seite 1(2) Aufgabe 1: (Arrays) public class ZiffernweiseAddition { public static void main(String[] args) { // Anzahl Ziffern bestimmen Out.print("Wie viele Ziffern haben die Zahlen? "); int maxZiffern = In.readInt(); // Einlesen der Ziffern der ersten Zahl int[] zahl1 = new int[maxZiffern]; for (int i = 0; i < maxZiffern; i++) { Out.println("Geben Sie die " + (i+1) + ". Ziffer der ersten Zahl ein: "); zahl1[i] = In.readInt(); } // Einlesen der Ziffern der zweiten Zahl int[] zahl2 = new int[maxZiffern]; for (int i = 0; i < maxZiffern; i++) { Out.println("Geben Sie die " + (i+1) + ". Ziffer der zweiten Zahl ein: "); zahl2[i] = In.readInt(); } // Array für Summe anlegen - die Summe zweier Zahlen hat maximal eine // Ziffer mehr als die größere der beiden Summanden int[] summe = new int[maxZiffern + 1]; // Variable für den Übertrag deklarieren und mit 0 initialisieren int uebertrag = 0; // Summe spaltenweise von rechts nach links bestimmen for (int i = maxZiffern - 1; i >= 0; i--) { // Summe der i-ten Ziffern inkl. Übertrag bestimmen int spaltenSumme = zahl1[i] + zahl2[i] + uebertrag; // neuen Übertrag bestimmen durch ganzzahlige(!) Division uebertrag = spaltenSumme / 10; // letzte Ziffer der Spaltensumme als (i+1)-te Ziffer // der Summe merken summe[i + 1] = spaltenSumme % 10; } // letzten Übertrag als erste Ziffer der Summe merken summe[0] = uebertrag; // Summe ausgeben Out.println("Die Summe der beiden Zahlen beträgt: "); for (int i = 0; i < summe.length; i++) { Out.print(summe[i]); } Out.println(); } } Technische Informatik für Ingenieure – Übungsblatt 8 Aufgabe 2: Seite 2(3) (Arrays) a) public class MagischesQuadratLoesung { public static int[][] matrixEinlesen(int n) { int[][] matrix = new int[n][n]; for (int zeile = 0; zeile < n; zeile++) { for (int spalte = 0; spalte < n; spalte++) { Out.print((spalte+1) + ". Zahl der " + (zeile+1) + ". Zeile eingeben: "); matrix[zeile][spalte] = In.readInt(); } } return matrix; } public static void main (String[] args) { // Dimension der n x n-Matrix erfragen Out.print("Bitte geben Sie die Dimension der n x n-Matrix ein: "); int n = In.readInt(); // Matrix einlesen int[][] matrix = matrixEinlesen(n); // Zeilensummen berechnen und ausgeben int[] zeilensumme = new int[n]; for (int zeile = 0; zeile < n; zeile++) { for (int spalte = 0; spalte < n; spalte++) { zeilensumme[zeile] += matrix[zeile][spalte]; Out.print(matrix[zeile][spalte] + "\t"); } Out.println(zeilensumme[zeile]); } // Spaltensummen berechnen und ausgeben int[] spaltensumme = new int[n]; for (int spalte = 0; spalte < n; spalte++) { for (int zeile = 0; zeile < n; zeile++) { spaltensumme[spalte] += matrix[zeile][spalte]; } Out.print(spaltensumme[spalte] + "\t"); } Out.println(); // Variable, um sich zu merken, ob es sich um ein magisches Quadrat handelt boolean magischesQuadrat = true; // Summen überprüfen int ersteSumme = zeilensumme[0]; for (int zeile = 1; magischesQuadrat && zeile < n; zeile++) { if (zeilensumme[zeile] != ersteSumme) { magischesQuadrat = false; } } for (int spalte = 0; magischesQuadrat && spalte < n; spalte++) { if (spaltensumme[spalte] != ersteSumme) { magischesQuadrat = false; } } if (magischesQuadrat) Out.println("Es handelt sich um ein magisches Quadrat."); else Out.println("Es handelt sich nicht um ein magisches Quadrat"); } } Technische Informatik für Ingenieure – Übungsblatt 8 Seite 3(3) b) ... if (magischesQuadrat) Out.println("Es handelt sich um ein magisches Quadrat."); else Out.println("Es handelt sich nicht um ein magisches Quadrat"); // Überprüfen, ob es sich um ein spezielles magisches Quadrat handelt int diagonalSumme1 = 0; int diagonalSumme2 = 0; for (int i = 0; i < n; i++) { diagonalSumme1 += matrix[i][i]; diagonalSumme2 += matrix[n-i-1][i]; } if (diagonalSumme1 == ersteSumme && diagonalSumme2 == ersteSumme) Out.println("Es handelt sich um ein spezielles magisches Quadrat."); else Out.println("Es handelt sich nicht um ein spezielles magisches Quadrat"); } }