Zweidimensionale Arrays

Helena0001

Mitglied
Hallo Leute, ich arbeite gerade an einem Algorithmus Programm. Alles läuft gut jedoch verstehe ich eine Sache nicht...

Im ersten Teil werden ja zweidimensionale Arrays erstellt. im ersten n für die Anzahl der Prozess die durch den Scanner eingegeben werden :

Java:
 int a [][] = new int[n + 1][4];  //Array für n, das was eingeben wird; für Anzahl von AT BT WT TT
      //proc[][0] is the AT array pLATZ
      //proc[][1] is the BT array
      //proc[][2] is the WT array
      //proc[][3] is the TT array

Nun wir s initialisiert, was für den selektierten Prozess steht. Nun wird bei jeder if - Bedingung [j] gesetzt?! ich verstehe es einfach nicht. Das würde ja dann heißen [1][0] (für das erst ) aber das macht ja irgendwie keinen Sinn oder !?
und würde man dann deuten dass die Zeile 1 und Spalte 0 kleiner als i also 1 sein muss ? Aber wieso 1 wenn ich 1 ; 0 habe.
Java:
 int s = 1;     // Variable für den selektierten Prozess

 for(int i = 0; i < t_t; i++) {
      for(int j = 1; j <= n; j++)
      {
       if(a[j][0] <= i)    //kleiner als i
       {
        if(a[j][1] != 0)    // ungleich 0
        {
         a[j][3]++;
           if(j != s)
             a[j][2]++;
        }
        else if(j == s)
         a[j][3]++;
       }
      }
}
Danke für die Antworten 🙂
 
Zuletzt bearbeitet von einem Moderator:
Code bitte in Code-Tags ([code=java]//dein code...[/code]) 😉

Ehrlich gesagt versteh ich nichts von deiner Frage...kannst du noch mal versuchen die anders zu stellen?
 
Hast du denn eindimensionale Arrays verstanden?

j ist einfach nur der Index für das äußere Array, a[j] ist damit das Array was an Stelle j in a steht.
a[j][0] ist damit der Wert, der an der nullten Stelle des j-ten Arrays von a steht.
 
Oder könntest du mir das Prinzip dieser if - Bedingung erklären. Ja eindimensonales Array habe ich verstanden. Nur wir haben es eher alles überflogen und nie wirklich mit Bedingungen gemacht und im Internet finde ich wirklich auch nichts dazu.
 
Hallo Leute, ich arbeite gerade an einem Algorithmus Programm.
Da Du nicht erläuterst, was Dein Algorithmus für ein Aufgabe hat, ist es schwierig zu erklären was er macht.
Des weiteren sind die remarks in diesem Algortihmus nicht richtig.
if(a[j][0] <= i) //kleiner als i
Hier müsste stehen kleiner oder gleich i
Ich habe zum besseren Verständnis des Algorlithmus versucht ( Unkenntnis des Sinns der dahintersteht )
1) Den Variablen bezeichnede Namen zu gebeben
2) Remarks zu den Bedingungn hinzugefügt.

Java:
final int AT = 0;// proc[][0] is the AT array
        final int BT = 1;// proc[][1] is the BT array
        final int WT = 2;// proc[][2] is the WT array
        final int TT = 3;// proc[][3] is the TT array
        // create numberValues+1 times a  4 dimensional Array for integer
        int a[][] = new int[numberValues + 1][4];

        int selectedProcess = 1; // Variable für den selektierten Prozess

        // comparedValue = 0 - ( maxComparedValue - 1 )
        for (int comparedValue = 0; comparedValue < maxComparedValue; comparedValue++) {
            // j = 1-numberValues --> a[0][AT], a[0][BT], a[0][WT] and a[0][TT] are not used
            for (int currentProcess = 1; currentProcess <= numberValues; currentProcess++) {
                if (a[currentProcess][AT] <= comparedValue) { // only if a[][AT] <= comaredValue --> do something
                    if (a[currentProcess][BT] != 0) {// if a[][BT] != 0
                        a[currentProcess][TT]++;
                        if (currentProcess != selectedProcess) {
                            a[currentProcess][WT]++;
                        }
                    } else if (currentProcess == selectedProcess) {
                        // if a[][BT] == 0 and currentProcess == selectedProcess
                        a[currentProcess][TT]++;
                    }
                }
            }
        }
Was mach der Algorithmus?
1)
Der Algorithmus erzeugt numberValues + 1 mal ein vierdimensionales Array für integer Werte.
Wobei das Array a[0][] nicht benutzt wird. 😱 --> besser nur numberValues Arrays und die 0 benutzen
2) Er durchläuft Vergleichswerte von 0 bis maxCompareValue.
3) Nur wenn der Wert in a[][AT] <= dem augenblicklichen Vergleichswert ist passiert etwas
Das ist immer der Fall weil wir ja das Array gerade erst erzeugt haben und dann alle Felder 0 beinhalten.
Außerdem wird nirgendwo a[][AT] neu gesetzt. 😱 --> Bedingung ist überflüssig
4) Wenn a[][BT] != 0 dann .. 😱 Das ist nie der Fall. Selbe Grund wie Punkt 3)
5)
Dann bleibt nur mehr wenn currentProcess == selectedProcess --> erhöhe a[selectedProcess][TT] um eins.

Aus meiner Sicht ist dieser Algorithmus nicht sehr brauchbar.
Aber vielleicht fehlen mir nur die nötigen Informationen dazu.
😉
 
Super danke 🙂 Beim Algorithmus geht es um das FCFS scheduling Verfahren. Dieser Abschnitt ist für die WT und TT zuständig. Durch deine Erklärung sehe ich es jetzt aus einer anderen Perspektive danke 🙂
 

Zurück
Oben