| symmetrische Matrix < C/C++ < Programmiersprachen < Praxis < Informatik < Vorhilfe 
 
 
  |  |  
  | 
    
     | 
 | Aufgabe |  | Eine Matrix A in R nxn ist symmetrisch, falls Ajk=Akj für alle j,k von 1....n gilt. Schreiben Sie eine Funktion issymmetric, die eine Matrix A auf Symmetrie überprüft(Rückgabewert 1 bei Symmetrie und 0 bei Nicht-Symmetrie). Schreiben Sie ein aufrufendes Hauptprogramm, in dem A eingelesen wird und ausgegeben wird, ob A symmetrisch ist oder nicht. Speichern Sie die Matrix spaltenweise. Die Dimension n in N der Matrix soll eine Konstante im Hauptprogramm, aber ein Parameter der Funktion issymmetric sein. | 
 
 | 1: | #include <stdio.h> |  | 2: | #define N 3 |  | 3: |  |  | 4: | int issymmetric(double A[],int n) |  | 5: | { |  | 6: | int j,k; |  | 7: | double tmp; |  | 8: |  |  | 9: | for(j=0;j<n;++j)  for(k=j+1;k<n;++k) |  | 10: | tmp=A[j+k*n]; |  | 11: | A[j+k*n]=A[k+j*n]; |  | 12: | A[k+j*n]=tmp; |  | 13: |  |  | 14: | for(j=0;j<n;++j)  for(k=j+1;k<n;++k) |  | 15: | { if(A[j+k*n]!=A[k+j*n]) |  | 16: | return 0; |  | 17: | else |  | 18: | return 1; |  | 19: | } |  | 20: |  |  | 21: | main() |  | 22: | { |  | 23: | int j,k,n; |  | 24: | double A[N*N]; |  | 25: |  |  | 26: | for(j=0;j<N;++j) for(k=j+1;k<N;++k) |  | 27: | { printf("A(%d %d)",j,k); |  | 28: | scanf("%lf",&A[j+k*n] ); } |  | 29: |  |  | 30: | printf("sym=%d\n",issymmetric(A,n)); |  | 31: | } | 
 
 Ich grüble schon ewig.
 
 Ich habe diese Frage auch in folgenden Foren auf anderen Internetseiten gestellt:
 
 https://tuwis.tuwien.ac.at/zope/_ZopeId/52601658A3X5y91I9UQ/tpp/trusted/student/forum/dispMsg?num=101275&sem=2008S&msgid=439233&sort=thread
 
 
 |  |  |  | 
 
  |  |  
  | 
    
     |  | Status: | (Antwort) fertig   |   | Datum: | 16:48 Fr 23.05.2008 |   | Autor: | Gilga | 
 Speichern Sie die Matrix spaltenweise:
 Bestimmt nicht alles in einem Vektor speichern!
 double A[N][N]; verwenden und spaltenweise einlesen!
 
 26: 	for(j=0;j<N;++j) for(k=j+1;k<N;++k)
 Netter Versuch: mit dieser Schleife kann man nur folgende Elemente der Matrix speichern: (=>nur brauchbar wenn man eine symmetrische MAtrix einlesen möchte). Hier muss man aber auf Symmetrie überprüfen.
 
 Schreibe mal deine Schleifen um und verwende zum speichern
 Bedenke Ajk=Akj für alle j,k von 1....n
 
 X X X X X
 X X X X
 X X X
 X X
 X
 
 
 |  |  | 
 
 
 |