Magische Quadrat.



  • Magische Quadrat. Ein magisches Quadrat ist eine quadartische Matrix,
    für die die Summe jeder Zeile, jeder Spalte und der beiden Diagonalen
    selbst den gleichen Wert ergibt. Lesen sie eine Zahl n sowie eine
    nxn Matrix ein. Schreiben Sie eine Methode welche prüft ob eine Matix
    ein magisches Quadrat darstellt.
    Wer kann mir helfen



  • Fang erst einmal an ... bei konkretem Problem kann dir hier geholfen werden.



  • Dies ist eine Aufgabe von meiner Schule die in Java lösen soll. Und ich kriegs nicht auf der reihe.



  • Ist mir schon klar, dass das deine Hausaufgaben sind. Hier wird dir aber keiner die Arbeit abnehmen. Erstelle dir erst mal ein Konzept und fange die Programmierung an. Wenn du dann konkrete Probleme in Java hast helfen wir dir hier gerne weiter 🙂



  • Also diesen schema habe ich.
    4 9 2
    3 5 7
    8 1 6
    Wenn mann drei zahlen addiert kommt man immer auf 15 links => rechts
    runter => hoch. Diese prüfungen habe ich schon aber ich weiss nicht wie ich das diagonal machen soll also zb 4 + 5 + 6?

    /*
    Magische Quadrat. 
    Ein magisches Quadrat ist eine quadartische Matrix, 
    für die die Summe jeder Zeile, jeder Spalte und der beiden Diagonalen 
    selbst den gleichen Wert ergibt. Lesen sie eine Zahl n sowie eine
    nxn Matrix ein.Schreiben Sie eine Methode welche prüft ob eine Matix
    ein magisches Quadrat darstellt.
    */
    class magisches_quadrat
    {
    	public static void main (String args[])
    	{
       		boolean ergebnis = true;	
        	int i, x, y; 
        	int hilf = 0;
        	int pruefe = 0;  	
    
        	int mq [] [] =  { {4,9,2},   // Werte zum Prüfen der Methode
    				  		  {3,5,7},
    				 		  {8,1,6} };	
    
    		// Zeilen prüfung
    		ergebnis = true;
    		System.out.println( " \nZeilen " );
    		for(i=0; i < mq.length ; i++ )
    		{
    			pruefe = 0;						
    			for(x=0; x < mq[i].length ; x++ )
    			{									
    					if ( i == 0 )
    					{
    							hilf += mq[0] [x];
    							// System.out.println( " Ergebniss der ersten Zeile = " + hilf );		
    					} 
    					else 
    					{
    						pruefe += mq[i] [x];
    					}
    					System.out.println( "Angegebene  Werte = " + mq[i][x] );
    			}
    			if (x != 0)
    			{	
    				if(pruefe != hilf)
    				{
    					ergebnis = false;
    			   	}
    
    			}
    
    		}
    
    		System.out.println( " \nSind die Zeilen korekt? " + ergebnis );
    
    		// Spalten Prüfung
    		System.out.println( " \nSpalten " );
    		for(i=0; i < mq.length ; i++ )
    		{
    			pruefe = 0;						
    			for(x=0; x < mq[i].length ; x++ )
    			{									
    					if ( i == 0 )
    					{
    							hilf += mq[x] [0];
    							// System.out.println( " Ergebniss der ersten Zeile = " + hilf );		
    					} 
    					else 
    					{
    						pruefe += mq[x] [i];
    					}
    					System.out.println( "Angegebene  Werte = " + mq[x][i] );
    			}
    			if (i != 0)
    			{	
    				if(pruefe != hilf)
    				{
    					ergebnis = false;
    			   	}
    
    			}
    
    		}
    		System.out.println( " \nSind die Spalten korekt? " + ergebnis );
    	}
    
    }
    


  • Du lässt einfach eine Schleife über die Spalte laufen und nimmst als Zeilenindex den selben Schleifenwert wie für den Spaltenindex. Das einmal vor und einmal zurück dann hast du beide Diagonalen



  • nicht ganz...

    Für die Hauptdiagonale stimmt das - für die Nebendiagonale nicht.

    Schau dir einfach mal die Indizes an:

    0,0 0,1 0,2

    1,0 1,1 1,2

    2,0 2,1 2,2

    Bei der Nebendiagonale musst du den Laufindex der Zeile vom maximalen Index der Spalte abziehen - dann gehts.

    basedow


Anmelden zum Antworten