Buch Cover Buch Cover Buch Cover Buch Cover

Web-Code: - Webcode Help

Feld filtern (2) (Felder)

Füllen Sie ein Feld mit den Zahlen:

2, 17, 10, 9, 16, 3, 9, 16, 5, 1, 17, 14.

Schreiben Sie nun ein Programm, das aus dem obigem Feld das größte und kleinste Element eliminiert und das Resultat  als neues Feld zurückgibt. Der Prototyp der Funktion soll wie folgt aussehen:

elim(original: integer[]): integer[]

Bemerkung: Das neue Feld enthält somit weniger Elemente und wird dadurch kürzer.

Zusatzaufgabe: Sollte das Maximum (bzw. Minimum) mehrfach auftreten, so sind alle Exemplare zu löschen. Im gegebenen Zahlenbeispiel würden die Zahl Eins und beide Siebzehner (17) gelöscht. Das Maximum bzw. das Minimum könnte hierbei in einer Subroutine ermittelt werden.

6 Kommentare

Bitte melde dich an um einen Kommentar abzugeben

Kommentare (6)

mrdotzko 10. April 2018 14:49   reply report
tmxmaster
Ich würde bei der Aufgabenstellung (zumindest im Zusatzaufgabenteil) noch ergänzen, dass das größte und das kleinste Element jeweils in Unterprogrammen zu ermitteln ist. Und dass die Unterprogramme dann in der Funktion elim verwendet werden sollen.

ich würde in die Aufgebenstelllung evtl. noch die Lösung schreiben, dann können sie alle lösen.
wwbaselmemes 10. April 2018 14:40   reply report
mrdotzko
sach ma des is mal ne schwierige Aufgabe ne

ja find isch auch ne
mrdotzko 10. April 2018 14:39   reply report
sach ma des is mal ne schwierige Aufgabe ne
wwbaselmemes 10. April 2018 14:33   reply report
tmxmaster
Ich würde bei der Aufgabenstellung (zumindest im Zusatzaufgabenteil) noch ergänzen, dass das größte und das kleinste Element jeweils in Unterprogrammen zu ermitteln ist. Und dass die Unterprogramme dann in der Funktion elim verwendet werden sollen.

ok cool
wwbaselmemes 10. April 2018 14:32   reply report
holla
tmxmaster 27. April 2011 00:34   reply report
Ich würde bei der Aufgabenstellung (zumindest im Zusatzaufgabenteil) noch ergänzen, dass das größte und das kleinste Element jeweils in Unterprogrammen zu ermitteln ist. Und dass die Unterprogramme dann in der Funktion elim verwendet werden sollen.

3 Lösung(en)

public class Elim {
  public static void main(String[] args) {
    new Elim().top();    }

  void top() {
    int[] arr = {2, 17, 10, 9, 16, 3, 9, 16, 5, 1, 17, 14};
    int[] elim = elim(arr);
    ausgabe(elim); }

  
  int[] elim(int[] arr) {
    int min = findMin(arr);
    int max = findMax(arr);
    int count = countElesOhneMinMax(arr, min, max);
    int[] res = new int[count];
    ohneMinMaxUebertragen(arr, res, min, max);
    return res;  }  

  void ohneMinMaxUebertragen(int[] arr, int[] res,
                                   int min, int max) {
    int fromIdx = 0;
    int toIdx = 0;
    while(fromIdx < arr.length) {
        if(arr[fromIdx] != min && arr[fromIdx] != max) {
            res[toIdx] = arr[fromIdx];
            toIdx = toIdx + 1; }
        fromIdx = fromIdx + 1;  }  
  }

  int countElesOhneMinMax(int[] arr, int min, int max) {
    int count = 0;
    for(int x : arr) {
        if(x != min && x != max) {
            count = count + 1;  }
    }
    return count; }

  int findMin(int[] arr) {
    int min = arr[0];
    for(int m : arr) {
        if(m < min) {
            min = m;  }
    }
    return min; }

  int findMax(int[] arr) {
    int max = arr[0];
    for(int m : arr) {
        if(m > max) {
            max = m;  }
    }
    return max; }
  
  void ausgabe(int[] elim) {
    for(int x : elim) {
        System.out.print(x  + ", ");  }
  }
  
} // end of class Elim
                
def findminmax(a):
   a.sort()
   b=[]
   b.append(a[0])
   b.append(a[len(a)-1])
   return b

def elim(a):
   minmax=findminmax(a)
   for zahl in minmax:
      for i in range (a.count(zahl)):
         a.remove(zahl)
   return a

print elim([2, 17, 10, 9, 16, 3, 9, 16, 5, 1, 17, 14])
                
  public int[] elim(int[] original){
  
    // Temporäres Integer-Feld zur Aufnahme der neu gereihten Elemente
    int[] f = new int[original.length];
    
    // Elementzaehler für die Elemente ohne Max und Min
    int countElem = 0;
    
    int max = this.getMaxValue(original);
    int min = this.getMinValue(original);
    
    for (int i = 0; i < original.length; i++){

      // Aktuelles Element bestimmen
      int elem = original[i];
      
      if (elem != max && elem != min){
        countElem = countElem + 1;
        f[countElem-1] = elem;
      }
    }
    int[]erg = new int[countElem]; // Rückgabefeld anlegen

    // Kopieren der nicht gefilterten Elemente in das Rückgabefeld.
    for (int i = 0; i < countElem; i++){
      erg[i] = f[i];
    }

    return erg;
  }

  public int getMaxValue(int[] feld){
    int max = feld[0];
    for (int i = 1; i < feld.length; i++){
      int elem = feld[i];
      if (elem > max){
        max = elem;
      }
    }
    return max;
  }
  
  public int getMinValue(int[] feld){
    int min = feld[0];
    for (int i = 1; i < feld.length; i++){
      int elem = feld[i];
      if (elem < min){
        min = elem;
      }
    }
    return min;
  }
                

Lösung von: Jürgen Mang (Heinrich-Emanuel-Merck-Schule Darmstadt)

Verifikation/Checksumme:

2, 10, 9, 16, 3, 9, 16, 5, 14.

Aktionen

Bewertung

Durchschnittliche Bewertung:

Eigene Bewertung:
Bitte zuerst anmelden

Meta

Zeit: 1
Schwierigkeit: Mittel
Webcode: 3hiq-vtfi
Autor: Philipp Gressly Freimann (SANTIS Training AG)

Download PDF

Download ZIP

Zu Aufgabenblatt hinzufügen