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!

  • 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

    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")

    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.
    [Blockierte Grafik: http://www.snippr.de/social/img/logo.png]
    Kein Support für kommerzielle Scripts | Kein kostenloser Support via ICQ