zweidimensionale arrays

Status
Nicht offen für weitere Antworten.
Guten Abend Community

Da ich am Donnerstag ein Projekt abgeben muss, will ich euch nun um Rat fragen!
Dieses Projekt ist für die Note sehr ausschlaggebend.

Nun zum Projekt:

Ich habe ein zweidimensionales Array mit 16 Speicherplätzen angelegt.
Diesen 16 Plätzen darf ich beliebige Werte vergeben.
Theoretisch gesehen ist dieses Array ja wie eine Art Quadrat. Ich muss nun die Diagonale von rechts oben nach links unten addieren. Und das mit einer for-schleife.
Ich weiss allerdings nicht, wie ich das anstellen soll!

Code:
private void jButtonAddierenActionPerformed(java.awt.event.ActionEvent evt) {
       
         int[][] array1 = new int[4][4];
         
         array1[0][0] = 4;
         array1[0][1] = 5;
         array1[0][2] = 3;
         array1[0][3] = 1;
         array1[1][0] = 5;
         array1[1][1] = 2;
         array1[1][2] = 4;
         array1[1][3] = 3;
         array1[2][0] = 4;
         array1[2][1] = 2;
         array1[2][2] = 1;
         array1[2][3] = 5;
         array1[3][0] = 4;
         array1[3][1] = 3;
         array1[3][2] = 4;
         array1[3][3] = 5;
         
                         
        
    }

Ich bitte um Rat.

mfg Thomas
 
S

SlaterB

Gast
fange mit einem eindimensionalen Array der Länge 4 an, und addiere alle 4 Werte in einer Schleife, klappt das?

wenn du array[0] + array[1] + array[2] +array[3] per for-i hinbekommst,
dann sollte eine der Diagonalen, nämlich array[0][0] + array[1][1] + array[2][2] +array[3][3] nicht viel schwerer sein,

die andere Diagonale ist schon bisschen hapiger, [0][3], [1][2], [2][1], [3][0],
wieder mit einer for-i Schleife von 0 bis 3,
noch keine Idee?
 
danke für den tipp!

aber ich kenne mich mit for-schleifen nicht sehr gut aus!

for (int i=0; i <=...; i++)

ich weiss nicht, was in die for-schleife kommt...
 
würd es dir was ausmachen wenn du den code hinschreibn würdest?

ich weiss, ihr macht keine hausaufgaben =)
aber hier ist es ziemlich ernst...

und wenn ich den code mal sehe, ist es für mich auch logisch!

mfg
 

Final_Striker

Top Contributor
also ehrlich,

slaterB hat dir schon gesagt

was für arrayelemete du auslesen musst,
wie du auf die einzelnen felder zugreifst
wie die dafür benötigte for-schleife aussieht

ein wenig selbstinitiative sollte man doch erwarten können, vor allem wenn das projekt so wichtig sein soll.
 
ich weiss leider nicht weiter...

es wäre nett wenn jemand den code richtig setzen würde, dann würd ichs auch verstehen!

Übrigens: Ich meinte die Diagonale von links oben nach rechts unten...

Code:
private void jButtonAddierenActionPerformed(java.awt.event.ActionEvent evt) {                                                

        int[][] array1 = new int[4][4];
        int summe = 0;

        array1[0][0] = 4;
        array1[0][1] = 5;
        array1[0][2] = 3;
        array1[0][3] = 1;
        array1[1][0] = 5;
        array1[1][1] = 2;
        array1[1][2] = 4;
        array1[1][3] = 3;
        array1[2][0] = 4;
        array1[2][1] = 2;
        array1[2][2] = 1;
        array1[2][3] = 5;
        array1[3][0] = 4;
        array1[3][1] = 3;
        array1[3][2] = 4;
        array1[3][3] = 5;



        for (int i = 0; i <= 3; i++) {

            summe = summe + i;

        }

        jTextArea1.append("Addition der Digonale:  " + summe + "\n");

    }
 
ich danke dir! funktioniert!

nur wieso verwende ich in der for-schleife "i<=3"?
das leuchtet mir nicht so ein, ich versteh die logik nicht...


lg
 
S

SlaterB

Gast
was wäre denn deiner Meinung nach eine Alternative?
irgendwie muss man sagen von 0 bis 3, irgendeine Syntax muss dafür festgelegt sein, das ist sie..
 
ja stimmt, ich versteh es schon.

slaterB, wie du bestimmt bemerkt hast, bin ich nicht so das informatik-genie...
deshalb hätt ich noch eine frage:

und zwar muss ich alle werte beider diagonalen miteinander multiplizieren.
hättest du da vlt auch den ein oder andren tipp für mich?

mfg
 
S

SlaterB

Gast
Tipps gabs genug, du fragst nur nach weiteren Lösungen, so gehts nicht weiter
 
ja seh ich ein...
aber wie gesagt, dieses programm ist sehr wichtig, und ich will kein Nicht-Genügend im zeugnis haben!

eine diagonale zu multiplizieren ist ja kein problem, aber die 2te dazu schon...
wäre echt nett wenn mir da noch helfen könntest.
 

Schandro

Top Contributor
eine diagonale zu multiplizieren ist ja kein problem
Das sagst du, nachdem dir fast die komplette Lösung gepostet wurde^^

die andere Diagonale ist schon bisschen hapiger, [0][3], [1][2], [2][1], [3][0],
wieder mit einer for-i Schleife von 0 bis 3,
noch keine Idee?
Wurde weiter oben bereits gepostet. Das einzige was du dich fragen musst, ist:
Wie komme ich von 0 auf 3
von 1 auf 2
von 2 auf 1
und von 3 auf 0

Ist einfache Mathematik.

€dit:
aber wie gesagt, dieses programm ist sehr wichtig, und ich will kein Nicht-Genügend im zeugnis haben!
deine Noten stehen immer im Verhältnis zu den Noten der anderen. Wenn du jetzt also die Komplettlösung bekommst, ohne selber was geleistet zu haben, wertest du damit die Leistungen alle anderen runter. Und das wollen wir nicht.
 
Zuletzt bearbeitet:
Code:
private void jButtonDiagonalenMultiplizierenActionPerformed(java.awt.event.ActionEvent evt) {                                                                


        int[][] array1 = new int[4][4];
        int summe = 1;
        int summe1 = 1;
        int summe2 = 1;



        array1[0][0] = 4;
        array1[0][1] = 5;
        array1[0][2] = 3;
        array1[0][3] = 1;
        array1[1][0] = 5;
        array1[1][1] = 2;
        array1[1][2] = 4;
        array1[1][3] = 3;
        array1[2][0] = 4;
        array1[2][1] = 2;
        array1[2][2] = 1;
        array1[2][3] = 5;
        array1[3][0] = 4;
        array1[3][1] = 3;
        array1[3][2] = 4;
        array1[3][3] = 5;

        for (int i = 0; i <= 3; i++) {

            summe = summe * array1[i][i];

        }

        for (int i = 0; i <= 3; i++) {

            summe1 = summe1 * array1[i][i];

        }

        summe2 = summe1 * summe;

        jTextArea1.append("Multiplikation der Digonalen:  " + summe2 + "\n");

}


problem ist die 2te for-schleife...
ich versteh das system der for-schleifen nicht so wirklich...
 
Gut, die Multiplikation ist geschafft! Ich danke euch für die Tipps!

Hätt nur noch ein Anliegen:

Und zwar muss ich die Hälften spiegeln. Also die Werte der einen Hälfte müssen sich in der andren Hälfte befinden und umgekehrt...
Es sind die Hälften neben der Diagonale.

mfg
 
S

SlaterB

Gast
nur noch ein Anliegen, das erinnert an gestern abend

> deshalb hätt ich noch eine frage:

gut, damals ohne das Wort 'nur' ;)

-------

meinst du 'an der Diagonalen spiegeln?', also z.B. 0,0 bleibt wie es ist, 0,1 geht nach 1,0 usw?

dann empfehle ich eine doppelte for-Schleife,
für jedes Element i,j musst du prüfen, ob es oberhalb der Diagonale liegt und dann das Gegenüber bestimmen und tauschen,

Tauschen geht, in dem du den Wert zunächst in einer dritten Variable ablegst
 
ja, du hast es richtig erkannt...

gut, ich lasse mir deinen tipp mal durch den kopf gehen.

aber mit meinen kentnissen dürfte das ziemlich schwierig werden...
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Oben