Magic Square

D

daniel1986

Gast
Java:
 import java.util.StringTokenizer;

	

	public class  MagicSquare {
		
		private int [][]a;
		
	
	public MagicSquare(int size){
		a= new int [size][size];
	}
	

	public MagicSquare(String zeichen){
		
		StringTokenizer t= new StringTokenizer(zeichen,",");
		while(t.hasMoreTokens()){
			String token= t.nextToken();
		}
	}
	
	
	public MagicSquare(int [][]b){
		a=new int [b.length][b.length];
		System.arraycopy(b,0,a,0,b.length);
	}
	
	
	
	
	
	public boolean isMagic(){
		
		long zeilensumme=0;
		long zeilensumme1=0;
		long spaltensumme=0;
		long spaltensumme1=0;
		long diagonalsumme=0;
		long diagonalsumme1=0;
		for(int y=0;y<a.length;y++){
			for(int y1=0;y1<a.length;y1++){
				zeilensumme= zeilensumme + a[0][y];
				zeilensumme1= zeilensumme1 + a[0][y1];
				if(zeilensumme==zeilensumme1){
			
				}else{
					
					System.out.println(false);
					return false;

				}
				
			}
		}
				for(int y2=0;y2<a[0].length;y2++){
					for(int y3=0;y3<a[1].length;y3++){
					spaltensumme=spaltensumme+a[y2][0];
					spaltensumme1=spaltensumme1+a[y3][1];
						if(spaltensumme==spaltensumme1){
					
						}else{
						System.out.println(false);
						return false;

						}
						
					}
				}
				
				for(int d=0;d<a.length;d++){
					diagonalsumme += a[d][d];
					
				}
				for(int d2=a.length-1;d2>=0;d2--){
					diagonalsumme1 += a[d2][d2];
				}
				if(diagonalsumme == diagonalsumme1){
					
				}else{
					System.out.println(false);
					return false;
				}
				
				if((diagonalsumme == diagonalsumme1) && (spaltensumme==spaltensumme1) && (zeilensumme==zeilensumme1)){
					System.out.println(true);
					return true;
					
				}else{
					System.out.println(false);
					return false;
				}
	}
		
	
	public static void main(String[]args){
		
		
		MagicSquare m1= new MagicSquare(2);
		
		m1.addEntry(0,0,1);
		m1.addEntry(0,1,2);
		m1.addEntry(1,0,3);
		m1.addEntry(1,1,4);
		m1.print();
		System.out.println(m1.isMagic());
		
		MagicSquare m2=new MagicSquare("8,1,6,3,5,7,4,9,2");
		m2.print();
		System.out.println(m2.isMagic());
	
		
		int [][]c={{1,15,14,4},{12,6,7,9},{8,10,11,5},{13,3,2,16}};
		
		MagicSquare m3= new MagicSquare(c);
		m3.print();
		System.out.println(m3.isMagic());
		
		MagicSquare m4 = new MagicSquare(7);
		m4.generateOddMagicSquare(7);
		m4.print();
		System.out.println(m4.isMagic());

		

		
		
		}

		
		
		private void print() {
			
			for(int x=0;x<a.length;x++){
				for(int y=0;y<a[0].length;y++){
										
					System.out.print(a[x][y]+" ");
				}
				System.out.println();
			}
				
		}
		
	
		

		private void addEntry(int i, int j, int k) {
			a[i][j]=k;
		
		
		}
		
		
		//a
		public void generateOddMagicSquare(int n){
			if(n%2 != 0){
				System.out.println("aufgabe 2a");
				System.out.println("Zahl ist ungerade");	
			}else{
				System.out.println("aufgabe 2a");
				System.out.println("IllegalArgumentException");
			}
			
			//b
			if( n < a.length || n <a[0].length ){
				System.out.println("Genügend Platz");	
			}else{
				throw new IllegalArgumentException("nicht genug Speicherplatz");
			}
			
			//c
			
		
			
		}
			
}


Hallo das hier ist mein bisheriger Quelltext.

es soll rauskommen

12
34 <--- den gibt Eclipse aus.
false

816
357
492
true

1 15 14 4
12 6 7 9
8 10 11 6
13 3 2 16
true

22 31 40 49 2 11 20
21 23 32 41 43 3 12
13 15 24 33 42 44 4
5 14 16 25 35 36 45
46 6 8 17 26 35 37
38 47 7 9 18 27 29
30 39 48 1 10 19 28
true

Die letzten 3 Matrixen gibt es noch nicht aus.
Was muss ich ändern/hinzufügen das dies funktioniert?
 
D

daniel1986

Gast
Das Programm soll berechnen ob alle Summen gleich sind.
Diagonalen in beide Richtungen und waagerecht und senkrechte Summen gleich sind.
Das testet ja public boolean isMagic(){}

Ich weiß nur nicht wie ich diese 3 fehlenden Matrizen noch ausgeben kann.
 

Cem

Mitglied
achso jetzt ich trottel :D magische vierecke das hat mir mal mein lehrer gesagt als ich auf meinem TI versucht hab einen solver für sudoku zu programmieren :D

aber in java hab ichs noch nicht probiert und für meinen TI war das zuviel rechenaufwand ^^

aber ist doch ganz gut bis jetzt dein code ;)

ich versuch mich mal dahinter zu klemmen wenn ich zeit finde ist klasse wieder ne neue programmier idee ^^ hab aber grad so viel zu lernen :( und deshalb hab ich keine zeit
 

Cem

Mitglied
vielleicht solltest du das ganze mal rekursiv Berichtigen ein "m..." nach dem anderen durchtesten nicht alle auf einmal ^^

also ich hab das ganze mal so laufen lassen

Java:
public static void main(String[]args){
        
        
        MagicSquare m1= new MagicSquare(2);
        
        m1.addEntry(0,0,1);
        m1.addEntry(0,1,2);
        m1.addEntry(1,0,3);
        m1.addEntry(1,1,4);
        m1.print();
        System.out.println(m1.isMagic());
        
        //MagicSquare m2=new MagicSquare("8,1,6,3,5,7,4,9,2");
        //m2.print();
        //System.out.println(m2.isMagic());
    
        
        int [][]c={{1,15,14,4},{12,6,7,9},{8,10,11,5},{13,3,2,16}};
        
        MagicSquare m3= new MagicSquare(c);
        m3.print();
        System.out.println(m3.isMagic());
        
        /*MagicSquare m4 = new MagicSquare(7);
        m4.generateOddMagicSquare(7);
        m4.print();
        System.out.println(m4.isMagic());*/

und er gibt mir als ausgabe folgendes zurück

1 2
3 4
false
false
1 15 14 4
12 6 7 9
8 10 11 5
13 3 2 16
false
false

ich glaube dein M1 stimmt aber dein M3 zeigt zwar keine Exeption an ist aber leider troztdem falsch da die matrix stimmt nur das false müsste ein true sein

es könnte sein das ich jetzt nen haufen bullshit gelabert hab da ich das programm nur überflogen hab aber ich hoffe es hat dir trotzdem etwas geholfen ^^

ich weis aber noch nicht wozu der code im endeffekt eigentlich nützlich sein soll ? ^^ was willst du damit machen wenns fertig ist ?

MfG Cem
 
D

daniel1986

Gast
die aufgabe muss ich für mein studium machen. komm aber an dem punkt nicht weiter.
 
D

daniel1986

Gast
Hallo,

bei mir kommt genau das gleiche raus.
muss da mal meine Schleife überprüfen:)
muss wohl bei m2 und m4 noch was machen das es was ausgibt.
weiß nur noch net genau was ich da noch machen muss

mfg daniel
 

Cem

Mitglied
Immer weiter machen ^^ ich hab auch noch nie ein programm gleich am Anfang zum laufen gebracht, es sei den es war ein "hello world" XD

Ich denke deine zweite Version des Konstruktors mit den tokens also M2, ist nicht passend in ein Array gelegt worden denn es gibt bei mir, eine java.lang.NullPointerExeption. Vielleicht arbeitest du, da dieser Fehler kommt, mit einem Objekt dessen wert null ist? vielleicht hilft dir das weiter " hier "

Ich denke für M4 wirst du relativ schnell eine Lösung finden, du hast ja schon einen abfangblock dafür entworfen ^^

Wieso hast du eigentlich den Konstruktor überladen mit 4 verschiedenen funktionsweisen, wie er ein und das selbe Problem lösen soll ? Versuch doch einmal, die isMagic logik für jeden Kunstroktor Maßzuschneidern ^^

Ich wünsch dir viel Erfolg ;)
 

JanHH

Top Contributor
Haaaaaaaaaaaaaaaaaaaaalloooooooooooo?

"Die Aufgabe soll ich für mein Studium machen"

Schon allein die Art der Fragestellung ist eine Zumutung. Postest nur endlos java code und das Resultat, und erklärst nichtmal, was das alles eigentlich machen soll. Und erwartest dann, dass die Leute sich hier da dann durchfummeln, weil Du ja zu faul warst wenigstens noch zu erklären welchen Sinn das alles hat, und Dir dabei helfen, eine Aufgabe zu lösen, die Du fürs Studium brauchst. Wenn Du die Aufgabe nicht lösen kannst wirst Du vermutlich zu Recht durchfallen, und wenn Du schon studierst, solltest Du zumindest in der Lage sein, Deine Fragen adäquat zu posten. Was Du hier machst ist nur "ich suche einen dummen der meine Aufgaben für mich löst".
 
D

daniel1986

Gast
danke cem du hast mir schon sehr geholfen. habs hinbekommen.

@JanHH;

ich vermute mal das hier das ein Hilfe forum ist oder täusche ich mich da etwa?
Def Forum:
Virtueller Ort im Internet, an dem sich Leute austauschen können; meist in verschiedene Themen gegliedert.
Das heißt auch das Personen sich über Probleme mit dem Quellcode und wie es weitergeht austauschen um weiterzukommen und sich weiter zu verbessern.

Und da es nichts taugt vorm pc zu sitzen ist es wohl auch sinnvoller ander zu fragen die es eventuell wissen.
da sinnloses brüten niemanden weiterbringt.
Und wenn mal jemand es nich nach einer Norm wie du sie ja vorraussetzt stellt heißt das nicht gleich das man es verdient hat durchzufallen.
jeder stellt seine fragen anders.aber beim nächsten mal schreib ich dich gerne an ob es deiner Norm entspricht.
 

JanHH

Top Contributor
Also wenn Dir nicht klar ist warum es etwas daneben ist, lediglich jede Menge Quellcode sowie die Ausgabe desselbigen zu posten, ohne jede Erklärung was überhaupt die zugrundeliegende Aufgabenstellung ist und was da Deiner Meinung nach schief läuft, dann.. ja was dann eigentlich. Fällt mir irgendwie gar nix zu ein. Ist einfach unhöflich irgendwie, vorsichtig ausgedrückt. "Eine Unverschämtheit" würds auch noch treffen.

Ansonsten, wenn man sich mit dem Programm beschäftigt (und Du hast es ja offenbar zumindest selber geschrieben) sollte man doch eine vage Vermutung haben, was da schief läuft, und diese kann man dann auch ruhig mal erwähnen. Meiner Ansicht nach geht es hier um KONKRETE java-Fragen, und nicht um diffus "irgendwas in meinem langen Programm klappt nicht, bitte löst es für mich".

Aber auch egal, wenn Du hier wen findest der die Arbeit für Dich macht und auch sonst im Leben mit Deiner Art durchkommst ist doch ok. Meine Meinung kann Dir dann ja auch egal sein.
 

Ähnliche Java Themen

Neue Themen


Oben