Anzeige:
Ergebnis 1 bis 4 von 4

Thema: C - Problem mit 2d Array

  1. #1
    Registrierter Benutzer
    Registriert seit
    17.12.2005
    Beiträge
    55

    C - Problem mit 2d Array

    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
    Code:
    double **initMatrix( unsigned int, unsigned int); 
    void freeMatrix( double **);
    Die Funktion initMatrix
    Code:
    #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:
    Code:
    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 :>
    Geändert von ragna (27-01-2006 um 17:57 Uhr)

  2. #2
    Registrierter Benutzer Avatar von peschmae
    Registriert seit
    14.03.2002
    Ort
    Schweizland
    Beiträge
    4.549
    %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ä
    The greatest trick the Devil ever pulled was convincing the world he didn't exist. -- The Usual Suspects (1995)
    Hey, I feel their pain. It's irritating as hell when people act like they have rights. The great old one (2006)

  3. #3
    Registrierter Benutzer
    Registriert seit
    17.12.2005
    Beiträge
    55
    THX !!! endlich
    bist n schatz !!
    sowas dummes hält mich hier ewig auf ...

  4. #4
    Registrierter Benutzer Avatar von peschmae
    Registriert seit
    14.03.2002
    Ort
    Schweizland
    Beiträge
    4.549
    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ä
    The greatest trick the Devil ever pulled was convincing the world he didn't exist. -- The Usual Suspects (1995)
    Hey, I feel their pain. It's irritating as hell when people act like they have rights. The great old one (2006)

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •