ragna
27-01-2006, 17:16
Also ich will erstmal nur Zahlen in ein 2d Array einlesen und wieder ausgeben ... die Matrix hab ich durch ein Array von pointern auf pointer gestaltet :
matrix.h
double **initMatrix( unsigned int, unsigned int);
void freeMatrix( double **);
Die Funktion initMatrix
#include "matrix.h"
double **initMatrix ( unsigned int Zeilenzahl, unsigned int Spaltenzahl)
{
double **Matrix, *p;
int i;
/* Zeiger auf Feld von Zeigern ( Zeilen )*/
Matrix = ( double **) malloc
( sizeof( double*) * Zeilenzahl);
/* Zeiger auf Matrix, */
/*zeilenweise hintereinander abgespeichert*/
Matrix[0] = ( double *) malloc
( sizeof( double) * Zeilenzahl * Spaltenzahl);
/* Zeiger auf 2.Zeile */
p = Matrix[0] + Spaltenzahl;
/* Eintrag der Zeiger auf die Zeilen */
for( i = 1; i < Zeilenzahl; i++, p += Spaltenzahl)
Matrix[i] = p;
return Matrix;
}
void freeMatrix( double **Matrix)
{
free( *Matrix);
free( Matrix);
}
und die main:
printf("Bitte geben sie die Anzahl der Unbekannten an!\n");
scanf("%u",&numunknown);
row=numunknown; /*Anzahl Zeilen der Matrix
nur von 0 bis row-1 */
column=numunknown+1; /*Anzahl Spalten der Matrix
nur bis column-1 also bis numunknown*/
matrix=initMatrix(row,column);
printf("Bitte geben sie von links nach rechts und von oben nach unten\n");
printf("die Faktoren der %u Variablen Zeilenweise und mit\n",numunknown);
printf("Leerzeichen getrennt, ein.\n");
for(i=0; i!=row; ++i)
{
for(j=0; j!=column-1; ++j)
{
scanf("%f",&matrix[i][j]);
}
printf("\n");
}
printf("Bitte geben sie den Loesungsvektor wie oben beschrieben an!\n");
for(i=0; i!=row; ++i)
{
scanf("%f",&matrix[i][column-1]);
printf("\n");
}
//Ausgabe des linearen GLS
printf("Es folgt die Ausgabe des GLS in Matrixschreibweise:\n");
for(i=0; i!=row; ++i)
{
printf("(");
for(j=0,t=1; j!=column-1; ++j,++t)
{
printf("%.2f",(double)matrix[i][j]);
if(t!=numunknown) printf("\t");
}
printf(")");
printf("\t(x%d)",i+1); //Variablenvektor
printf(" = (%.2f)",(double)matrix[i][column-1]); //Lösungsvektor
printf("\n");
}
und irgendwas stimmt schon beim einlesen nicht .. irgend eine falsche zuweisung ... hilfe :>
matrix.h
double **initMatrix( unsigned int, unsigned int);
void freeMatrix( double **);
Die Funktion initMatrix
#include "matrix.h"
double **initMatrix ( unsigned int Zeilenzahl, unsigned int Spaltenzahl)
{
double **Matrix, *p;
int i;
/* Zeiger auf Feld von Zeigern ( Zeilen )*/
Matrix = ( double **) malloc
( sizeof( double*) * Zeilenzahl);
/* Zeiger auf Matrix, */
/*zeilenweise hintereinander abgespeichert*/
Matrix[0] = ( double *) malloc
( sizeof( double) * Zeilenzahl * Spaltenzahl);
/* Zeiger auf 2.Zeile */
p = Matrix[0] + Spaltenzahl;
/* Eintrag der Zeiger auf die Zeilen */
for( i = 1; i < Zeilenzahl; i++, p += Spaltenzahl)
Matrix[i] = p;
return Matrix;
}
void freeMatrix( double **Matrix)
{
free( *Matrix);
free( Matrix);
}
und die main:
printf("Bitte geben sie die Anzahl der Unbekannten an!\n");
scanf("%u",&numunknown);
row=numunknown; /*Anzahl Zeilen der Matrix
nur von 0 bis row-1 */
column=numunknown+1; /*Anzahl Spalten der Matrix
nur bis column-1 also bis numunknown*/
matrix=initMatrix(row,column);
printf("Bitte geben sie von links nach rechts und von oben nach unten\n");
printf("die Faktoren der %u Variablen Zeilenweise und mit\n",numunknown);
printf("Leerzeichen getrennt, ein.\n");
for(i=0; i!=row; ++i)
{
for(j=0; j!=column-1; ++j)
{
scanf("%f",&matrix[i][j]);
}
printf("\n");
}
printf("Bitte geben sie den Loesungsvektor wie oben beschrieben an!\n");
for(i=0; i!=row; ++i)
{
scanf("%f",&matrix[i][column-1]);
printf("\n");
}
//Ausgabe des linearen GLS
printf("Es folgt die Ausgabe des GLS in Matrixschreibweise:\n");
for(i=0; i!=row; ++i)
{
printf("(");
for(j=0,t=1; j!=column-1; ++j,++t)
{
printf("%.2f",(double)matrix[i][j]);
if(t!=numunknown) printf("\t");
}
printf(")");
printf("\t(x%d)",i+1); //Variablenvektor
printf(" = (%.2f)",(double)matrix[i][column-1]); //Lösungsvektor
printf("\n");
}
und irgendwas stimmt schon beim einlesen nicht .. irgend eine falsche zuweisung ... hilfe :>