lukasz.proszek.info

Powrót do listy plików

wczytaj_macierz.c

//oryginalny kod wczytujący macierze, na GPL by Piotr (earle) Kiebasiński
//modeyfikacje i dostosowanie do własnych potrzeb Łukasz (frogu) Proszek

#include "pivotgauss.h"

void
wczytaj_macierz (FILE * skad, typ *** gdzie, int *wierszy, int *kolumn)
{

  int n_wier = 0;                //ilosc kolumn
  int n_kol = 0;         //ilosc wierszy 
  char temp[ROZMIAR];
  int flaga = 0;
  int m = 0;
  int i, j;
  typ **gdzie_1;            //wskaznik do wskaznika, gdzie wczytam macierz


////////////////////*Okreslenie wymiarow macierzy*////////////////////////
  while ((fgets (temp, ROZMIAR, skad)) != NULL) {
    n_wier++;                    //zwieksz liczbe wierszy
    flaga = n_wier;
    while ((temp[m] != '\n') && (flaga == USTAWIENIE_FLAGI)) {
      if (isspace (temp[m]) && (m < ROZMIAR)) {
              m++;
      }                          //pominiecie znaku pustego, jak tak zaczynam macierz
      if (((isdigit (temp[m])) || (temp[m] == '.')) //jesli to cyfra lub kropka
            &&                      //i
            (isspace (temp[m + 1]))       //nastepny znak jest pusty
            ) {
              n_kol++;           //to zwieksz liczbe kolumn
      }
      m++;
    }
  }

///////////////////////////////////////////////////////////////////////////

  *wierszy = n_wier;                //ile wczytales wierszy
  *kolumn = n_kol;          //ile wczytales kolumn

  printf ("\nWewnatrz funkcji : %d wierszy i %d kolumn", *wierszy, *kolumn);

  /*przewiniecie strumienia na poczatek */
  rewind (skad);

  /*Pora na allokacje macierzy */
  gdzie_1 = (typ **) calloc (n_wier,sizeof (typ));
  for (i = 0; i < n_wier; i++) {
    gdzie_1[i] = (typ *) calloc (n_kol,sizeof (typ));
  }

////////////////////////////*wczytywanie macierzy*///////////////////////       
  for (i = 0; i < n_wier; i++) {
    for (j = 0; j < n_kol; j++) {
      fscanf (skad, "%lf", &gdzie_1[i][j]);
    }
  }
////////////////////////////////////////////////////////////////////////

/*kontrolne wypisanie*/
  
     for(i=0; i<n_wier; i++)
     {
     printf("\n");
     for(j=0; j<n_kol; j++)
     {
     printf("\t %f ", gdzie_1[i][j]);
     }
     }
   
  //printf("\n\t teraz gdzie: %f", gdzie_1);
  *gdzie = gdzie_1;         //to bedzie zwrocone do podprogramu wywolujacego.

}


syntax highlighted by Code2HTML, v. 0.9.1
kod przerobiony z HTML na XHTML za pomocą HTML Tidy for Linux/x86