erstellt 31.05.03 übersetzt 22.06.03; überarbeitet 01.02.05; © Copyright 2003 - 2005 Deutsche Übersetzung Heinrich Gailer
Vervollständigen Sie das folgende Programm,
so dass es die Summe aller Elemente des Arrays,
die Summe der geraden Elemente und die
Summe der ungeraden Elemente errechnet.
Setzen Sie voraus, dass alle Zahlen null oder positiv sind.
Gerade Integer sind solche, für die N%2
== 0 ist.
class DreiSummen { public static void main ( String[] args ) { int[] array = {3, 2, 5, 7, 9, 12, 97, 24, 54}; // drei Variablen für die Summen deklarieren und initialisieren // Summen berechnen for ( int index = 0; index < array.length; index++ ) { } // Summen ausgeben System.out.println( ); } }
Zurück zum Inhaltsverzeichnis.
Vervollständigen Sie das folgende Programm, so dass es die zwei größten Elemente des Arrays berechnet und ausgibt.
class DieZweiGroessten { public static void main ( String[] args ) { int[] array = {3, 1, 5, 7, 4, 12, -3, 8, -2}; // Variablen für die zwei größten Elemente deklarieren und initialisieren // die zwei größten Elemente berechnen for ( int index= ; index < array.length; index++) { } // die zwei größten Elemente ausgeben System.out.println( ); } }
Zurück zum Inhaltsverzeichnis.
Vervollständigen Sie das folgende Programm, so dass es
die Reihenfolge der Werte in array
umkehrt
und sie ausgibt.
In der ersten Version des Programms gibt es nur ein Array und seine Werte werden durch eine etwas trickreiche Programmierung umgekehrt.
class ArrayUmkehren1 { public static void main ( String[] args ) { int[] array = {1,2,3,4,5,6,7,8,9,10,11,12,13,14}; // Daten umkehren for ( int j = 0; j < seien Sie vorsichtig hier; j++) { } // neuen Daten ausgeben for ( int j = 0; j < array.length; j++) { } } }
Schreiben Sie jetzt ein weiteres Programm,
das zwei Arrays verwendet.
Das erste Array array
wird nicht geändert.
Das zweite Array ziel
bekommt die Elemente
von array
in umgekehrter Reihenfolge.
class ArrayUmkehren2 { public static void main ( String[] args ) { int[] array = {1,2,3,4,5,6,7,8,9,10,11,12,13,14}; int[] ziel = // die Daten von array in umgekehrter Reihenfolge nach ziel kopieren for ( int j = 0; j < be careful here; j++) { } // Ergebnis ausgeben for ( int j = 0; j < ziel.length; j++) { } } }
Zurück zum Inhaltsverzeichnis.
Ein Tonsignal wird manchmal als Liste von int
-Werten gespeichert.
Die Werte repräsentieren die Intensität des Signals
in aufeinanderfolgenden Zeitintervallen.
Natürlich wird in einem Programm das Signal
durch ein Array repräsentiert.
Oft ist in dem Signal ein kleiner Anteil von Störgeräuschen enthalten. Störgeräusche sind üblicherweise kleine, momentane Änderungen der Tonhöhe. Ein Beispiel ist das "Geräusch", das zusätzlich zum Ton eines AM Radios zu hören ist.
Das Glätten des Tons entfernt das Störgeräusch und verbessert die Wahrnehmung der Tonqualität. Diese Aufgabe besteht darin, die Werte eines Integerarrays zu glätten.
Angenommen, dass die ursprünglichen Werte in dem Array "signal" sind.
Berechnen Sie das geglättete Array, in dem Sie folgendes tun:
Jeder Wert geglaettet[N]
ist der Durchschnitt von
drei Werten: signal[N-1]
,
signal[N]
und signal[N+1]
.
Berechnen Sie für das erste Element von geglaettet
den Durchschnitt der ersten zwei Elemente von signal
.
Berechnen Sie für das letzte Element von geglaettet
den Durchschnitt der letzten zwei Elemente von signal
.
Verwenden Sie dafür Integerarithmetik ,
so dass die Werte in geglaettet
Integer sind.
class Glaetten { public static void main ( String[] args ) { int[] signal = {5, 5, 4, 5, 6, 6, 7, 6, 5, 4, 1, 4}; int[] geglaettet // berechnen Sie den geglätteten Wert für jeden Slot // von Array geglaettet geglaettet[0] = geglaettet[ signal.length-1 ] = for ( ) { } // Geben Sie den Input aus for ( int j = 0; j < geglaettet.length; j++) { } // Geben Sie das Ergebnis aus for ( int j = 0; j < geglaettet.length; j++) { } } }
Denken Sie daran, wenn Sie die Ergebnisse interpretieren, dass Integerdivision den Rest verwirft. Sie berechnet keinen gerundeten Wert. Hier ist, was das Programm ausgibt.
C:\data\JavaNotes>java Glaetten signal: 1 5 4 5 7 6 8 6 5 4 5 4 geglaettet: 3 3 4 5 6 7 6 6 5 4 4 4 C:\data\JavaNotes>
Zurück zum Inhaltsverzeichnis.
Angenommen, dass Sie an der Berechnung des durchschnittlichen Säuregehalts von Kaffee intressiert sind, wie er in den Cafés in Ihrer Heimatstadt serviert wird. Sie besuchen viele Cafés und tauchen Ihr pH-Messgerät in Kaffeeproben. Sie zeichnen das Ergebnis in einer Textdatei wie der folgenden auf. Die erste Zeile zeigt die Anzahl der Werte an, die folgen werden.
13 5.6 6.2 6.0 5.5 5.7 6.1 7.4 5.5 5.5 6.3 6.4 4.0 6.9
Allerdings wissen Sie, dass Ihr pH-Messgerät manchmal falsche Ergebnisse liefert. Also entschließen Sie sich den Messwert, der am weitesten vom Durchschnitt entfernt ist, nicht zu berücksichtigen.
Erzeugen Sie eine Textdatei wie die oben stehende oder eine mit ähnlichen Daten. Schreiben Sie jetzt ein Programm, dass die Daten in ein Array einliest (verwenden Sie Input-Umlenkung wie sie im Kapitel 22 erklärt wird). Berechnen Sie den Durchschnitt aller Daten. Durchsuchen Sie jetzt das Array, um den Wert zu finden, der am weitesten (in jeder Richtung) vom Durchschnitt entfernt ist. Setzen Sie den Wert auf -1, um anzuzeigen, dass der Wert nicht aufgenommen wird. Berechnen und geben Sie den neuen Durchschnitt aus.
Hier ist ein Ablauf des Programms:
C:\>java KaffeeDurchschnitt < KaffeeDaten.txt array[ 0 ] = 5.6 array[ 1 ] = 6.2 array[ 2 ] = 6.0 array[ 3 ] = 5.5 array[ 4 ] = 5.7 array[ 5 ] = 6.1 array[ 6 ] = 7.4 array[ 7 ] = 5.5 array[ 8 ] = 5.5 array[ 9 ] = 6.3 array[ 10 ] = 6.4 array[ 11 ] = 4.0 array[ 12 ] = 6.9 Durchschnitt: 5.930769230769231 entferntester Wert: 4.0 neuer Durchschnitt: 6.091666666666668
Hinweis: dies ist eine schwierigere Aufgabe als Sie denken mögen. Ich stelle sie manchmal in den Prüfungen Mitte des Semesters und manche Studenten können sie nicht lösen.
Zurück zum Inhaltsverzeichnis.
Ende der Aufgaben