lukasz.proszek.info

Powrót do listy plików

#include "lu.h"

#define ZNAK > //kierunek sortowania 

void pivot(typ **tablica, typ **wynik,typ **L, int n_wiers, int n_kolu, int ktora_kolumna )
{
        typ *wiersz_temp = NULL;
  typ b_temp;
        int i, j, k, wiersz;
        typ max=0;
  
        //allokacja wiersza potrzebnego do zamiany
        if( (wiersz_temp = (typ *) calloc (n_kolu,sizeof(typ))) == NULL) {
                printf("\nNieudane przydzielenie pamieci\n");
                abort();
        }
//      else   {
//              printf("\nPoprawnie przydzielilem pamiec na wiersz_temp");
//      }

  for(i=ktora_kolumna;i<n_kolu;i++){ // schodzimy wierszami w dół
     if(abs(tablica[i][ktora_kolumna])>max) { //jeżeli element większy na abs od naszego maxa
        max=abs(tablica[i][ktora_kolumna]); //to wstawiamy go za maxa
        wiersz=i; //i notujemy numer wiersza.
     }
  }

  /* teraz dokonamy zamiany wierszy */

  for(i=0;i<n_kolu;i++){
     wiersz_temp[i]=tablica[ktora_kolumna][i];
     tablica[ktora_kolumna][i]=tablica[wiersz][i];
     tablica[wiersz][i]=wiersz_temp[i];
  }

  
  for(i=0;i<n_kolu;i++){
     wiersz_temp[i]=L[ktora_kolumna][i];
     L[ktora_kolumna][i]=L[wiersz][i];
     L[wiersz][i]=wiersz_temp[i];
  }

  /* i wektora wyników */

  b_temp=wynik[ktora_kolumna][0];
  wynik[ktora_kolumna][0]=wynik[wiersz][0];
  wynik[wiersz][0]=b_temp;
     
  
        printf("\nMacierz posortowana wg %i kolumny/wiersza:\n", (ktora_kolumna));


  for(i=0;i<n_wiers;i++){
     for(j=0;j<n_kolu;j++){
        printf("%f\t",tablica[i][j]);
     }
     printf("\t%f\n",wynik[i][0] );
  }
  
        //dealokacja wiersza
        free(wiersz_temp);  
//  free(b_temp);
}




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