Wie kommt man auf die Lösung Informatik array?

6 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Naja dein Array ist 5 Elemente lang das kleinste ist 5.

Es prüft ob i das mit 1 initialisiert ist kleiner ist als die Länge des Arrays also addiert er zur 5 eins hinzu. Das ergibt 6. Die 6 schreibt er dann dorthin wo die 11 war. Im zweiten Durchlauf ist i = 2 nun prüft es ob 2 kleiner als 5 ist auch das stimmt also addiert es auf 6 eins drauf und immer so weiter


Also ich glaube, die Aufgabe ist so gedacht, dass du das ganze programmiert und dann ausführst und notierst was passiert.

Wenn die Aufgabe aber so gedacht ist, dass du dir das herleiten musst, muss man dann halt im Kopf jeden Schritt durchgehen.

Man beginnt damit, dass im ersten Durchlauf der For-Schleife i=1 ist und somit der Wert von Arr[1] verändert wird. Dabei handelt es sich um den zweiten wert, der verändert wird, in diesem Fall die 11. Dabei wird der alte Wert überschrieben und auf den Wert arr[i-1] + 1 gesetzt wird. Anders geschrieben auch arr [0] + 1 oder 5+1 also 6

Das gleiche wird jetzt um eine Stelle verschoben. arr[2] wir jetzt auf arr[1] + 1 gesetzt. Arr[1] hatten wir ja gerade auf 6 gesetzt, also ist arr[1] + 1 = 7

Das geht jetzt so weiter.

Was du am Ende hast, ist ein Array, das so lange ist, wie dein Ausgangsarray. Dieses beinhaltet die Zahlen um eins aufsteigend, startend bei deinem 1. Wert

Ich hoffe, du konntest das etwas verstehen, ist schwierig so etwas schriftlich zu erklären.


MOOOOOOD 
Fragesteller
 11.01.2022, 22:14

Jap habs verstanden, danke

1

Steht doch oben im Nassi-Shneidermann-Diagramm.

Das Programm durchläuft das Array von der 2. bis zur letzten Position (2. Position heißt [1]). Der neue Wert an der Position ist der Wert der vorherigen Position um 1 erhöht.

Der Code würde in Java wie folgt aussehen.

Hinweis: Die printArr-Methode habe ich jetzt selbst dazu geschrieben, damit du es auch einmal selbst testen kannst. Sie ist in dem Diagramm eig. nicht enthalten.

public class Aufgabe
{
  public static void main(String[] args)
  {
    int[] arr = new int[] {5, 11, 3, 1, 10};
    
    for(int i = 1; i < arr.length; i++)
    {
      arr[i] = arr[i-1] + 1;
      printArray(arr);
    }
  }

  public static void printArray(int[] arr)
  {
    for(int i = 0; i < arr.length; i++)
    {
      System.out.println(arr[i] + " ");  
    }
    System.out.println();
  }
}
Wie kommt man plötzlich von 5 11 3 1 10 auf 5 6 7 8 9

Das ist ja nicht "plötzlich", das wird hier eben in n Schritten erreicht, die vom Algorithmus vorgegeben werden.

Schau ihn dir genau an und überlege doch mal, was dort gemacht wird. Die Schritte sind ja in der Tabelle zu sehen. Durchgang 0 ist dabei nur der Ausgangszustand, ohne etwas daran zu ändern


MOOOOOOD 
Fragesteller
 11.01.2022, 22:08

Ich sehe die Schritte nicht

0
xxxcyberxxx  11.01.2022, 22:09
@MOOOOOOD
Ich sehe die Schritte nicht

Du hast doch das Bild angefügt. In der Tabelle ist der Zustand der Tabelle bezüglich des momentanen "i" ...

Schau dir den Algorithmus oben an und schau dir in der Tabelle die entsprechende Stelle im Array an

0
xxxcyberxxx  11.01.2022, 22:18
@MOOOOOOD
Ja den alg hab ich nicht verstanden

Dabei ist es relativ trivial. Um es mal in Worte umzuschreiben (auch wenn es nicht sonderlich anders ist)

  • arr ist ein Integer-Array mit den Werten [5, 11, 3, 1, 10]
  • i startet bei 1
  • Während i kleiner ist als die Länge des Arrays, wiederhole folgende Anweisung:
  • Weise dem Feld arr[i] den Wert von arr[i - 1] zu und addiere 1 dazu. Erhöhe anschließend i um 1
  • Wenn die Schleife vorbei ist, gebe das Array zurück

Bedenke dabei, dass das erste Feld des Arrays den Index 0 hat und das letzte Feld den Index (Länge des Arrays - 1)

1

Hättest du zufällig die Arbeit mit den Lösungen noch


MOOOOOOD 
Fragesteller
 23.11.2022, 21:02

Das in rot geschrieben ist doch die Lösung

0