Anmelden

Archiv verlassen und diese Seite im Standarddesign anzeigen : C - Problem mit 2d Array



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 :>

peschmae
27-01-2006, 18:40
%lf statt %f beim einlesen, dann funktionierts bei mir erstmal. %f ist für float, %lf für long float aka double und %llf respektive %Lf für long double...

MfG Peschmä

ragna
27-01-2006, 18:43
THX !!! endlich :)
bist n schatz !! :)
sowas dummes hält mich hier ewig auf ...

peschmae
27-01-2006, 21:17
Ach und übrigens: Das sagt der Compiler schon bei mir dass da was mit den Typen nicht stimmt :)

Zumindest wenn du GCC mit der Option -Wall ausführst.

Es sei denn du hättest die Warnung ignoriert (das wäre dann ganz böse ;))

MfG Peschmä