Aufgabenblatt 5: Kontrollstrukturen II

Aufgabe 5.1: Quersumme

Schreiben Sie ein Programm, das eine beliebige positive int-Zahl über die Tastatur einliest, ihre Quersumme berechnet und die durchgeführte Berechnung sowie den Wert der Quersumme wie folgt ausgibt:

Positive ganze Zahl eingeben: 2345
Die Quersumme ergibt sich zu: 5 + 4 + 3 + 2 = 14

Aufgabe 5.2: Noch mehr Zäune

Schreiben Sie jeweils ein Programm, das...

  • zwei Variablen anzahlX und anzahlY bei Programmstart einliest und ein gefülltes Rechteck mit der Breite anzahlX und der Höhe anzahlY aus dem Zeichen # auf der Konsole ausgibt.

    Beispielausgabe (für anzahlX = 8 ; anzahlY = 3):

########
########
########
  • die Lösung so erweitert, dass nur ein "Rahmen" ausgegeben wird.

    Tipp: Verwenden Sie für die "Füllung" des Rechtecks Leerzeichen

    Beispielausgabe (für anzahlX = 10 ; anzahlY = 3):

##########
#        #
##########
  • eine Variable anzahl einliest und ein rechtwinkliges Dreieck aus #-Zeichen ausgibt.

    Beispielausgabe (für anzahl = 4):

#
##
###
####

Aufgabe 5.3: Kleines 1x1

Schreiben Sie ein Programm, das das kleine 1x1 berechnet und auf die Konsole ausgibt! Verwenden Sie for-Schleifen!

Beispielausgabe:

1   2   3   4   5   6   7   8   9   10
2   4   6   8   10  12  14  16  18  20
3   6   9   12  15  18  21  24  27  30
4   8   12  16  20  24  28  32  36  40
5   10  15  20  25  30  35  40  45  50
6   12  18  24  30  36  42  48  54  60
7   14  21  28  35  42  49  56  63  70
8   16  24  32  40  48  56  64  72  80
9   18  27  36  45  54  63  72  81  90
10  20  30  40  50  60  70  80  90  100

Tipp: Nutzen Sie das Zeichen \t (Tabulator), um die einzelnen Spalten untereinander anzuordnen!

Aufgabe 5.4: Quadrat kleinster gemeinsamer Vielfacher

Kombinieren Sie Ihr Wissen aus den Aufgaben "Kleinstes gemeinsames Vielfaches" und "Kleines 1x1" und erstellen Sie ein Quadrat, dessen Felder jeweils das kleinste gemeinsame Vielfache der Spalte (1 bis 10) und der Zeile (1 bis 10) enthalten.

Das Programm sollte als Ergebnis folgende Ausgabe erzeugen:

1   2   3   4   5   6   7   8   9   10  
2   2   6   4   10  6   14  8   18  10  
3   6   3   12  15  6   21  24  9   30  
4   4   12  4   20  12  28  8   36  20  
5   10  15  20  5   30  35  40  45  10  
6   6   6   12  30  6   42  24  18  30  
7   14  21  28  35  42  7   56  63  70  
8   8   24  8   40  24  56  8   72  40  
9   18  9   36  45  18  63  72  9   90  
10  10  30  20  10  30  70  40  90  10  

Hinweis: Wenn Sie den Algorithmus aus "Kleinstes gemeinsames Vielfaches" in Ihr Programm übernehmen, achten Sie darauf, dass Sie die Zählvariablen Ihrer Schleifen nicht verändern. Um das zu vermeiden kann es sinnvoll sein, bei jedem Schleifendurchlauf Kopien der Zählvariablen zu erstellen.

Aufgabe 5.5: Abbrechen und Fortfahren

Testen Sie Ihr Wissen zu Wiederholungsanweisungen, break und continue indem Sie folgendes Programm analysieren:

public class BreakAndContinue {
    public static void main(String args[]) {
        for (int i = 0; i < 100; i++) {
            if (i == 74) {
                break;
            }
            if (i % 9 != 0) {
                continue;
            }
            System.out.println(i);
        }

        int i = 0;

        while (true) {
            i++;
            int j = i * 30;
            if (j >= 1260) {
                break;
            }
            if (i % 10 != 0) {
                continue;
            }
            System.out.println(i);
        }
    }
}
  1. Ohne das Programm auszuführen: Bestimmen Sie die Ausgabe des Programms!
  2. Überprüfen Sie Ihre Annahme, indem Sie das Java-Programm eingeben und die Ausgabe mit Ihrem Ergebnis vergleichen. Nutzen Sie im Zweifel den Debugger.

Aufgabe 5.6: Zahlenraten

Schreiben Sie ein Programm, das mit Ihnen Zahlenraten spielt:

Der Computer denkt sich eine zufällige Zahl zwischen 0 und 99 aus. Der Spieler kann eine Zahl raten und der Computer antwortet solange mit dem Hinweis „Höher!“ oder „Niedriger!“ bis die Zahl getroffen wurde. Dazu wird dann gratuliert und angezeigt, wie viele Versuche benötigt wurden.

Hinweis:

  • Nutzen Sie die Klasse Random, um zufällige Zahlen zu erzeugen:
Random r = new Random();
int zahl1 = r.nextInt(100);   // zufällige Zahl zwischen 0 und 99
int zahl2 = r.nextInt(100)+1; // zufällige Zahl zwischen 1 und 100

Zusatzaufgabe

Aufgabe 5.7: Rautenteppiche

Schreiben Sie ein Programm, das Teppiche aus Rauten unterschiedlicher Höhe und Breite m (>=1, ungerade) ausgibt.

Einzelne Rauten bestehen aus den Zeichen O und .. Beispiele für einzelne Rauten verschiedener Größe:

m = 1:

O

m = 3:

.O.
OOO
.O.

m = 5:

..O..
.OOO.
OOOOO
.OOO.
..O..

m = 7:

...O...
..OOO..
.OOOOO.
OOOOOOO
.OOOOO.
..OOO..
...O...

Das Programm soll nun ein Anordnung von n Rauten nebeneinander und übereinander ausgeben. Zwischen zwei benachbarten Rauten liegt eine Zeile bzw. eine Spalte mit Punkten.

Die Werte für m und n sollen bei Programmstart vom Benutzer eingelesen werden.

Beispiele:

m = 5
n = 3
..O.....O.....O..
.OOO...OOO...OOO.
OOOOO.OOOOO.OOOOO
.OOO...OOO...OOO.
..O.....O.....O..
.................
..O.....O.....O..
.OOO...OOO...OOO.
OOOOO.OOOOO.OOOOO
.OOO...OOO...OOO.
..O.....O.....O..
.................
..O.....O.....O..
.OOO...OOO...OOO.
OOOOO.OOOOO.OOOOO
.OOO...OOO...OOO.
..O.....O.....O..
m = 1
n = 5
O.O.O.O.O
.........
O.O.O.O.O
.........
O.O.O.O.O
.........
O.O.O.O.O
.........
O.O.O.O.O