Technische Informatik für Ingenieure Winter 2006/2007

Werbung
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");
}
}
Herunterladen