matrix auf bestimmte eigenschaften prüfen...
-
bin schon den ganzen tag am rumbasteln und irgendwie langsam am verzweifeln...ich will ein prog schreiben das die anzahl verschiedener magischer quadrate der ordnung n prüft.
den algorithmus dafür hab ich jetzt so gut wie fertig, brauche nur noch eine programmroutine die eine n*n matrix dadrauf prüft ob sie die zahlen von 1 bis n² enthält und die prüft ob alle splaten-, zeilen- und diagonalensummen die gleichen sind. das letzte ist garnich mal so das problem, nur das prüfen ob alle zahlen von 1 bis n² drin sind krieg ich nich gebacken...kunt
-
du musst uns schon ein wenig entgegenkommen. etwas von dem ansatz bitte
willst du nur eine n*n "matrix" (wie auch immer implementiert) durchsuchen, um zu wissen, dass alle werte von 1 bis n² enthalten sind? zeig uns einfach mal die rahmenbedingungen und mach einen vorschlag, wie du es lösen würdest. eine idee hast du doch sicher
-
so wei bin ich schon:
#include <iostream.h> int a,b,c,d,e,f,g,h,i,w,x,y,n,vert,horiz,diag1,diag2,magicnumber=(n*n+1)*n/2; int square[3][3]; void main(void) { n=3; w=0; for(a=1;a<9;a++) { for(b=1;b<9;b++) { e=5; c=15-a-b; i=10-a; h=10-b; g=-5+a+b; d=20-2*a-b; f=-10+2*a+b; square[1][1]=a; square[1][2]=b; square[1][3]=c; square[2][1]=d; square[2][2]=e; square[2][3]=f; square[3][1]=g; square[3][2]=h; square[3][3]=i; for(x=diag1=diag2=0;x<n;x++) { for(y=vert=horiz=0;y<n;y++) { vert += square[x][y]; horiz += square[y][x]; } if(vert==magicnumber&&horiz==magicnumber) { diag1 += square[x][x]; diag2 += square[x][(n+1)-x]; } } if(vert==magicnumber && horiz==magicnumber && diag1==magicnumber && diag2==magicnumber) w++; } } cout << "Es existieren " << w <<" magische Quadrate\nder Ordnung 3.\n"; }
das mit dem prüfen ob alle zahlen von 1 bis n² vorhanden sind krieg ich aber nich gebacken...
kunt
-
Wie wäre es, wenn Du das Feld Zeile für Zeile durläufst, und bei jeder Zahl erstmal die Wurzel ziehst.
int merker[n*n]; for(i=0; i<3; i++) for(j=0; j<n; j++) { merker[i*n+j]=sqrt(square[i][j]); }
Dann kannst Du da Feld sortieren und gucken, ob alle Zahlen da sind.