erstellt 31.05.03 übersetzt 22.06.03; © Copyright 2003 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 null ist.
class ThreeSums
{
public static void main ( String[] args )
{
int[] data = {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 < data.length; index++)
{
}
// Summen ausgeben
System.out.println( );
}
}
Zurück zur Übersicht.
Vervollständigen Sie das folgende Programm, so dass es die zwei größten Elemente des Arrays berechnet und ausgibt.
class TwoLargest
{
public static void main ( String[] args )
{
int[] data = {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 < data.length; index++)
{
}
// die zwei größten Elemente ausgeben
System.out.println( );
}
}
Zurück zur Übersicht.
Vervollständigen Sie das folgende Programm, so dass es
die Reihenfolge der Werte in data 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 ReverserVersion1
{
public static void main ( String[] args )
{
int[] data = {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 < data.length; j++)
{
}
}
}
Schreiben Sie jetzt ein weiteres Programm,
das zwei Arrays verwendet.
Das erste Array data wird nicht geändert.
Das zweite Array result bekommt die Elemente
von data in umgekehrter Reihenfolge.
class ReverserVersion2
{
public static void main ( String[] args )
{
int[] data = {1,2,3,4,5,6,7,8,9,10,11,12,13,14};
int[] result =
// die Daten von data in umgekehrter Reihenfolge nach result kopieren
for ( int j=0; j < be careful here; j++)
{
}
// Ergebnis ausgeben
for ( int j=0; j < result.length; j++)
{
}
}
}
Zurück zur Übersicht.
Ein Tonsignal wird manchmal als Liste von int-Werten gespeichert.
Die Werte repräsentieren die Intensität des Signals
in aufeinanderfolgenden Zeitintervallen.
Natürlich, in einem Programm wird 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, indem Sie dieses tun:
Jeder Wert smooth[N] ist der Durchschnitt von
drei Werten: signal[N-1],
signal[N] und signal[N+1].
Berechnen Sie für das erste Element von smooth
den Durchschnitt der ersten zwei Elemente von signal.
Berechnen Sie für das letzte Element von smooth
den Durchschnitt der letzten zwei Elemente von signal.
Verwenden Sie dafür Integerarithmetik ,
so dass die Werte in smooth
Integer sind.
class Smooth
{
public static void main ( String[] args )
{
int[] signal = {1, 5, 4, 5, 7, 6, 8, 6, 5, 4, 5, 4};
int[] smooth
// berechnen Sie den geglätteten Wert für jeden Slot
// von Array smooth
smooth[0] =
smooth[ signal.length-1 ] =
for ( )
{
}
// Geben Sie den Input aus
for ( int j=0; j < smooth.length; j++)
{
}
// Geben Sie das Ergebnis aus
for ( int j=0; j < smooth.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:\>java Smooth signal: 1 5 4 5 7 6 8 6 5 4 5 4 smooth: 3 3 4 5 6 7 6 6 5 4 4 4 C:\>
Zurück zur Übersicht.
Angenommen, dass Sie an der Berechnung des durchschnittlichen Säuregehalts von Kaffee, wie er in den Cafés in Ihrer Heimatstadt serviert wird, interessiert sind. 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.
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
Unglücklicherweise 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 obenstehende oder mit ähnlichen Daten. Schreiben Sie jetzt ein Programm, dass die Daten in ein Array einliest (verwenden Sie Input-Umlenkung wie im Kapitel 22 erklärt). 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 Programmlauf:
C:\>java CoffeeAverage < CoffeeData.txt data[ 0 ] = 5.6 data[ 1 ] = 6.2 data[ 2 ] = 6.0 data[ 3 ] = 5.5 data[ 4 ] = 5.7 data[ 5 ] = 6.1 data[ 6 ] = 7.4 data[ 7 ] = 5.5 data[ 8 ] = 5.5 data[ 9 ] = 6.3 data[ 10 ] = 6.4 data[ 11 ] = 4.0 data[ 12 ] = 6.9 Durchschnitt: 5.930769230769231 Entferntester Wert: 4.0 Neuer Durchschnitt: 6.091666666666668
Zurück zur Übersicht.