Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
chil14r
Anmeldungsdatum: 10.12.2005 Beiträge: 3
|
Verfasst am: 10. Dez 2005 13:25 Titel: Matrix programmiern |
|
|
Hallo! Ich habe folgendes Problem : Ich will eine nxn Matrix A in eine (n-1)x(n-1) matrix B umschreiben. Dies passiert durch einen externen Schritt indem ich gezielt 2 Zeilen bzw Spalten zusammenfasse ( an der Stelle [i][j] stand der kleinste Eintrag von A) . Das problem liegt darin das ich die anderen Werte aus meiner Matrix A übernehmen will, natürlich ohne die beiden Zeilen/ Spalten, von denen ich die Indice kenne. Ich speichere also meine neue Zeile an stelle [i][0] und [0][j] ab . Die Matrizen sind beide symmetrisch. Doch wie kann ich nun die restlichen werte unbeschadet aus A in B umschreiben ? Mit einer for schleife habe ich das problem dass die eine Matrix größer ist als die andere. Gibt es eine andere Möglichkeit die Werte aus A abzuspeichern oder zu übertragen?
Danke für alle Ideen und Hilfe |
|
Nach oben |
|
|
|
Tobias
Anmeldungsdatum: 15.02.2005 Beiträge: 149
|
Verfasst am: 10. Dez 2005 14:56 Titel: |
|
|
Sorry, aber so kann ich das nicht verstehen.
Die Anmerkung "( an der Stelle [i][j] stand der kleinste Eintrag von A)" kann ich garnicht zuordnen.
Du hast in der nxn - Matrix A zwei Zeilen i und j, die du zusammenfasst zu einer Zeile und sie in einer neuen Matrix B als Zeile 0 abspeicherst? (Analog jeweils mit Spalten, weil die Matizen ja symmatrisch sind). Und nun willst du die Zeilen von A ohne i und j in die Matrix B ab Poition 1 reinschreiben? |
|
Nach oben |
|
|
Gast
|
Verfasst am: 10. Dez 2005 16:22 Titel: |
|
|
Also das mit kleinstem Eintrag kannste auch einfach überlesen ... es geht genau darum die alten Werten aus der Matrix rauszuholen und gleich in der neuen Matrix zu speichern .. dabei alle Werte von Zeile i und j auszulassen , weil die in einem ersten schritt in zeile / spalte 0 schon zusammengefasst in B gespeichert wurden. |
|
Nach oben |
|
|
chil14r
Anmeldungsdatum: 10.12.2005 Beiträge: 3
|
Verfasst am: 10. Dez 2005 16:25 Titel: |
|
|
Genau ! Das mit kleinsten Wert bitte streichen .... |
|
Nach oben |
|
|
Tobias
Anmeldungsdatum: 15.02.2005 Beiträge: 149
|
Verfasst am: 10. Dez 2005 21:01 Titel: |
|
|
Dann mach doch einfach ne doppelt verschachtelte Schleife, die die Indizes i und j auslässt.
In etwa so (nicht getestet):
Code: |
int rowIdx = -1; // Zeilenindex der Matrix A
for (int k=1; k<n-1; k++) {
do {rowIdx++} while(rowIdx == i || rowIdx == j); // i und j auslassen
int colIdx = -1; // Spaltenindex der Matrix A
for (int l=1; l<n-1; l++) {
do {colIdx++} while(colIdx == i || colIdx == j); // i und j auslassen
B[k][l] = A[rowIdx][colIdx];
}
}
|
|
|
Nach oben |
|
|
chil14r
Anmeldungsdatum: 10.12.2005 Beiträge: 3
|
Verfasst am: 10. Dez 2005 22:18 Titel: |
|
|
Ok ich muss das erstmal durchdenken .... aber du hast die unterschiedliche Größe der Matrizen beachtet ?
Besten Dank auf jeden fall..... eine sehr optimale Lösung .. hatte eben eine Idee die i und j Spalte ( und Zeile ) auf nem Array zu speichern und dann ganz nach hinten zu verschieben... damit ich A nicht mehr ganz durchlaufen muss... |
|
Nach oben |
|
|
|