carookee - group communication for you
Home / JavaForum / Beginner
Infos   |   Features   |   Gold-Edition   |   Kundenservice   
java
  Übersicht
  Forum
Beginner
Java allgemein
JDBC
JNI
Networking
Online-Ressourcen
Swing + AWT
XML
Meckerecke
  Mitglieder
LOGIN





· Passwort vergessen
· Kostenlos anmelden
  Information
  Demo
  Features
  Im Vergleich
  Anmeldung
SUCHE
Beiträge, Foren oder Verfasser finden:
  Kundenservice
  Impressum
  Datenschutz
  AGB
Status
4.764 User online
1 User eingeloggt
 

Beiträge
   Antworten     Neuer Beitrag    

Beitrag 46 von 2963 (2%) |<   <   >   >|

Autor Heiko Kraus
Datum 03.12.05, 15:13
Betreff Wie mach ich hier weiter? - magisches Quadrat


Hey Ihr, brauche ganz ganz dringend Hilfe.
Mal kurz die Aufgabe:

Dieses Quadrat aus den Zahlen 1 – 9 ist ein „magisches Quadrat“, da die Zeilensummen, die Spaltensummen und die beiden Diagonalsummen gleich sind.
Schreiben Sie zur Klasse ”matrix” eine Methode ”magischesquadrat()”, die bei
ungerader, gleichgroßer Zeilen- und Spaltenzahl n ein magisches Quadrat erzeugt
aus den Zahlen 1 – n².
Schreiben Sie ein geeignetes Hauptprogramm, um die Methode zu testen.
Ausgabe: Das magische Quadrat
Hinweis: Besetze die Mitte der ersten Zeile mit der Zahl 1.
Für alle weiteren i Zahlen gilt:
Gehe eine Zeile nach oben und eine Spalte nach rechts
korrigiere ggfs. die Position
solange die Position schon besetzt ist,
gehe eine Spalte nach links und zwei Zeilen nach unten und korrigiere
ggfs. die Position
besetze nun diese Position mit i
„korrigiere Position“ heißt, dass sowohl Zeilen- als auch Spaltenindex
im Bereich 0 bis n-1 liegen muss; zu einem Index < 0 muss n addiert
werden, von einem Index > n-1 muss n subtrahiert werden.
Verwenden Sie hierzu eine Methode „private void korrektur()“!

Und hier meine bisherige Lösung:

public class matrix {

private double m[][] = new double[10][10];
private int zeile,spalte;
private int q[][];

public matrix(int z,int s) {
zeile=z;
spalte=s;
if (zeile<0 || zeile >10 || spalte<0 || spalte>10)
System.out.println("Bitte geben Sie nur Zahlen zwischen 1 und 10 ein.");
}

public void wert(double w, int z, int s) {
m[z][s] = w;
}

public void reset(double f) {
for (int i=0;i<zeile;i++)
for (int j=0;j<spalte;j++)
m[i][j]=f;
}

public void ausgabe() {
for (int i=0;i<zeile;i++){
System.out.println();
for (int j=0;j<spalte;j++)
System.out.print(q[i][j]+" ");
}
}
wobei dieser teil natürlich der interessanteste ist!
public matrix(int n){
if (n>2 && n%2==1){
zeile=spalte=n;
q = new int[zeile][spalte];
for (int i=0;i<zeile;i++)
for (int j=0;j<spalte;j++)
q[i][j]=-1;
int z1=0;
int s1=n/2;
int z=1;
q[z1][s1]=1;
for (z=2;z<=n*n;z++){
q[z1][s1]=z;
z1--;
s1++;
if (z1<0){
z1+=n;
}
if (z1>=n){
z1-=n;
}
if (s1<0){
s1+=n;
}
if (s1>=n){
s1-=n;
}
}

}
else System.out.println("Bitte geben Sie eine natürliche ungerade Zahl größer gleich 3 ein.");
}

}


Ich hoffe mir kann da jemand weiterhelfen benötige die lösung wirklich sehr sehr schnell!
Vielen Dank im Voraus!!!


 Auf diesen Beitrag antworten
 Neuen Beitrag verfassen


|<   <   >   >|

                                                                                                                                                                                                                           

Impressum  · Datenschutz  · AGB  · Infos  · Presse
Ein modernes Forum: teamturn.com