057
05.01.2004, 12:15 Uhr
Pablo
Supertux (Operator)
|
Ich habe so gemacht: (hab was geändert)
C++: |
#include <stdio.h> #include <malloc.h>
void EingabeDerMatrix(double* matrix, int Rang) //hier habe ich so geändert { int Spalte, Zeile; int n=0;
for (Zeile = 0; Zeile < Rang; Zeile++) for (Spalte = 0; Spalte < Rang; Spalte++) { printf("%d. Zeile, %d. Spalte: ", Zeile+1, Spalte+1); scanf("%lf", &matrix[n]); n++; } }
int main() { int i, n; double* matrix; printf("Wir betrachten nur Quadartische Matrizen.\n"); printf("Geben Sie die Anzahl der Zeilen an: "); scanf("%d", &n); matrix = (double*) malloc(n*n*sizeof(double)); if (matrix==NULL) { fprintf(stderr, "Kein Speicher mehr!\n"); return 1; } EingabeDerMatrix(matrix, n);
for(i=0; i<n*n; ++i) { if (!(i% n)) printf("\n"); printf("%f ", matrix[i]); } printf("\n"); free(matrix); return 0; }
|
Der Verlauf sieht so aus:
Code: |
rex@supertux:~> ./mat Wir betrachten nur Quadartische Matrizen. Geben Sie die Anzahl der Zeilen an: 3 1. Zeile, 1. Spalte: 1 1. Zeile, 2. Spalte: 0 1. Zeile, 3. Spalte: 0 2. Zeile, 1. Spalte: 0 2. Zeile, 2. Spalte: 1 2. Zeile, 3. Spalte: 0 3. Zeile, 1. Spalte: 0 3. Zeile, 2. Spalte: 0 3. Zeile, 3. Spalte: 1
1.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 1.000000
|
Genau das was ich wollte, eine Einheitsmatrix.
Bearbeitung von Pablo: |
Bist du 100% sicher, dass die Eingabe Funktion richtig funktioniert? Dass die eingebenen Daten der Matrix entsprechen?
|
Bearbeitung von Pablo: |
C++: |
if (Det(mat,Rang) != 0) MatrInv(mat, Rang);
|
Welche der beiden Funktionen leifert immer nich richtige Ergebnisse?
|
-- A! Elbereth Gilthoniel! silivren penna míriel o menel aglar elenath, Gilthoniel, A! Elbereth! Dieser Post wurde am 05.01.2004 um 12:19 Uhr von Pablo editiert. |