Ergebnis 1 bis 2 von 2

Thema: Hilfe bei Array-Aufgabe

  1. #1
    Unregistriert
    Gast

    Unglücklich Hilfe bei Array-Aufgabe

    Hallo liebe Java-Spezialisten. Ich habe eine Aufgabe und komme leider nicht weiter. Ich hoffe mir kann jemand, nach Möglichkeit vielleicht sogar heute Abend noch ne Hilfe liefern.
    Also die Aufgabe ist folgende:

    Gegeben sei ein eindimensionales Integer-Array. Ein "Plateau" ist eine Sequenz von aufeinanderfolgenden gleichen Werten eines Arrays, so dass VOR und NACH dieser Seqenz die Feldelemente kleinere Werte enthalten.

    Beispiel:
    int a[]= {2,5,5,5,4,4,3,2,4,2,3,3};

    In diesem Fall besitzt das Array "a" 3 Plateaus:
    -Ein Plateau mit den Werten 5 an der Position 1 mit der Länge 3
    -Ein Plateau mit dem Wert 4 an der Position 8 mit der Länge 1
    -Ein Plateau mit den Werten 3 an der Position 10 mit der Länge 2

    Das Plateau mit den Werten 5 an der Position 1 ist also das längste Plateau in diesem Array.

    SCHREIBEN SIE EIN PROGRAMM WELCHES DIE POSITION UND DIE LÄNGE DES LÄNGSTEN IINTEGER-ARRAYS AUSGIBT. HIERBEI KANN DAS ARRAY DAS UNTERSUCHT WERDEN SOLL IM PROGRAMM DEKLARIERT UND INITIALISIERT WERDEN.


    Hier mein bisheriger Text:
    public class Plateau {
    public static void main (String[]args){

    int[]a = new int[10];
    a[0] = 2;
    a[1] = 5;
    a[2] = 5;
    a[3] = 5;
    a[4] = 4;
    a[5] = 4;
    a[6] = 3;
    a[7] = 2;
    a[8] = 3;
    a[9] = 3;

    for (int i=0;i<a.length;i++){
    System.out.println("Wert a[" +i+ "] = "+a[i]);
    }
    }
    }

    Also das Initialisiern und Deklarieren ist ja im Prinzip kein Problem. Ich denke das habe ich ja richtig gemacht. Mein Problem ist, wie schaffe ich es dass nur das längste Plateau ausgegeben wird. Ich hatte überlegt dass man das doch vllt mit einer For-Schleife und einer If-Abfrage lösen könnte. In der man dann fragt ist "i" größer als der nächste Wert usw... Aber wie man dann noch als Bedingung setzt das der vorheriger und nachfolgender Wert kleiner sein muss hab ich leider keine Idee : /

    HAT DA JEMAND EINE IDEE???? Für Hilfe wäre ich sehr dankbar!
    Achtung: Dies ist ein alter Thread im HTML und Webmaster Forum
    Diese Diskussion ist älter als 90 Tage. Die darin enthaltenen Informationen sind möglicherweise nicht mehr aktuell. Erstelle bitte zu deiner Frage ein neues Thema im Forum !!!!!

  2. #2
    König(in)
    Registriert seit
    06.06.2007
    Ort
    Bi
    Beiträge
    1.015
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard AW: Hilfe bei Array-Aufgabe

    Zitat Zitat von Unregistriert Beitrag anzeigen

    Beispiel:
    int a[]= {2,5,5,5,4,4,3,2,4,2,3,3};

    In diesem Fall besitzt das Array "a" 3 Plateaus:
    -Ein Plateau mit den Werten 5 an der Position 1 mit der Länge 3
    -Ein Plateau mit dem Wert 4 an der Position 8 mit der Länge 1
    -Ein Plateau mit den Werten 3 an der Position 10 mit der Länge 2

    Das Plateau mit den Werten 5 an der Position 1 ist also das längste Plateau in diesem Array.

    SCHREIBEN SIE EIN PROGRAMM WELCHES DIE POSITION UND DIE LÄNGE DES LÄNGSTEN IINTEGER-ARRAYS AUSGIBT. HIERBEI KANN DAS ARRAY DAS UNTERSUCHT WERDEN SOLL IM PROGRAMM DEKLARIERT UND INITIALISIERT WERDEN.


    Hier mein bisheriger Text:
    public class Plateau {
    public static void main (String[]args){

    int[]a = new int[10];
    a[0] = 2;
    a[1] = 5;
    a[2] = 5;
    a[3] = 5;
    a[4] = 4;
    a[5] = 4;
    a[6] = 3;
    a[7] = 2;
    a[8] = 3;
    a[9] = 3;

    for (int i=0;i<a.length;i++){
    System.out.println("Wert a[" +i+ "] = "+a[i]);
    }
    }
    }
    Hi Frohe Festtage erstmal!

    Zunächst einmal, ja du hast das Array korrekt deklariert und initialisiert und für dein Beispiel auch mit den korrekten Werten befüllt.
    Die Definition hat aber einen kleinen Hacken, da das letzte Plateau z.B. keine kleineren Werte sondern einfach gar keine Werte mehr hat, dies steht so aber nicht im Text.

    Der Ansatz der Schleife ist erstmal richtig, du musst ja das komplette Array einmal durchlaufen, um alle Werte geprüft zu haben.

    Das hast du also bisher gemacht:

    Code:
    Arraydeklarierung / Inizialisierung
    
    for-Schleife ( in der Wir das gesamte Array durchlaufen)
    Dröseln wir deine Bedingungen mal in Informatikersprache auf, du willst in dem Array ein Plateau erkennen, ein Plateau beginnt immer mit einer höheren Zahl und endet immer mit einer niedrigeren.
    Das bedeutet wir haben die Drei Bedingungen, das ein Plateau beginnt, das es andauert und das es endet

    Code:
    Arraydeklarierung / Inizialisierung
    
    for-Schleife ( gesamte Array durchlaufen)  {
       // FALL 1  
      if-Bedingung (aktueller_Wert  > vorherieger_Wert ){
            // behaupte erstmal das ein neues Plateau begonnen hatte
       } 
       // FALL 2
       if-Bedeingung( aktuelle_Wert > nächster_wert && Plateau_hatte_begonnen) {
           // das Plateau hatte Begonnen und ist beendet
      }
      // FALL 3
      if-Bedingung (akuteller_Wert = nächster_Wert && Plateau_hatte_begonnen) {
         // Ein Plateau dauert an
      }
    }
    So nun da du weißt, wie du ein Plateau bestimmen kannst, benötigst du nun noch 3 Variabeln:
    1 eine Temporäre Variabel mit der du die Länge des aktuellen Plateaus bestimmen kannst
    2. die länge des längsten Plateaus, die ersetzt wird, sobald das aktuelle Plateau länger ist
    3. die Position ab der dieses Beginnt (damit du das später zuordnen kannst , z.B. "das Platea 5 mit der länge 3 an der Stelle 2")

    Code:
    Arraydeklarierung / Inizialisierung
    Deklariung / Initialisierung von MAX_LAENGE_PLATEAU mit Länge 0 und INDEX_POSITION mit Position 0
    
    Deklariung / Initialisierung von TEMP_LAENGE
    for-Schleife ( gesamte Array durchlaufen)  {
      
       // FALL 1  
      if-Bedingung (aktueller_Wert  > vorherieger_Wert ){
            // behaupte erstmal das ein neues Plateau begonnen hatte
            TEMP_LAENGE auf 1 setzen
       } 
       // FALL 2
       if-Bedeingung( aktuelle_Wert > nächster_wert && Plateau_hatte_begonnen) {
           // das Plateau hatte Begonnen und ist beendet
           if-Bedingung(TEMP_LAENGE > MAX_LAENGE_PLATEAU) {
                // Das aktuelle Plateau ist länger als das vorherige
               // Speichern
               MAX_LAENGE_PLATEAU = TEMP_LAENGE 
               INDEX_POSITION = i
           }
      }
      // FALL 3
      if-Bedingung (akuteller_Wert = nächster_Wert && Plateau_hatte_begonnen) {
         // Ein Plateau dauert an
         TEMP_LAENGE um eins erhöhen
      }
    
     
    }
    Zum Schluss gibst du dann nur noch deine gespeicherten Werte NACH der Schleife aus und schon hast du dein Ergebnis.
    Sämtlicher Code erhebt keinen Anspruch auf syntaktische Korrektheit geschweige denn Ausführbarkeit und ist für die Implementation außerhalb der Beispiele nicht geeignet.

    Kein Support für kommerzielle Scripts | Kein kostenloser Support via ICQ

Ähnliche Themen

  1. Brauche Hilfe zum Lösen einer Aufgabe
    Von Aleph1 im Forum Forum für alle anderen Programmiersprachen
    Antworten: 2
    Letzter Beitrag: 09.11.2009, 01:24
  2. hilfe bei aufgabe! DRINGEND!!!
    Von Unregistriert im Forum Off Topic und Quasselbox
    Antworten: 1
    Letzter Beitrag: 25.10.2009, 11:03
  3. Hilfe bei Aufgabe
    Von ploi im Forum Off Topic und Quasselbox
    Antworten: 3
    Letzter Beitrag: 12.06.2007, 14:45
  4. Brauche bitte Hilfe bei dieser Aufgabe
    Von im Forum Off Topic und Quasselbox
    Antworten: 3
    Letzter Beitrag: 18.12.2006, 17:54
  5. Brauche Hilfe bei einfacher aufgabe im phpbb2!!
    Von zongg im Forum Webanwendungen - Webapplikationen
    Antworten: 1
    Letzter Beitrag: 31.10.2005, 14:00

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •