Advertisement
anotender

macierz_rzadka

Jan 15th, 2015
182
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.42 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. #define KOLUMNY 2
  5. #define WIERSZE 3
  6.  
  7. struct element
  8. {
  9.     int wiersz;
  10.     int kolumna;
  11.     double wartosc;
  12.     struct element *wsk;
  13. };
  14.  
  15. void dodaj_element(const int i,const int j,const double wartosc,struct element **wsk_poczatek)
  16. {
  17.     if (wartosc!=0)
  18.     {
  19.         struct element *nowy=(struct element*)malloc(sizeof(struct element));
  20.         nowy->kolumna=j+1;
  21.         nowy->wiersz=i+1;
  22.         nowy->wartosc=wartosc;
  23.         if(*wsk_poczatek==NULL)
  24.         {
  25.             nowy->wsk=*wsk_poczatek;
  26.             *wsk_poczatek=nowy;
  27.         }
  28.         else
  29.         {
  30.             struct element *iterator=*wsk_poczatek;
  31.             while(iterator->wsk!=NULL)
  32.             {
  33.                 iterator=iterator->wsk;
  34.             }
  35.             nowy->wsk=iterator->wsk;
  36.             iterator->wsk=nowy;
  37.         }
  38.     }
  39. }
  40.  
  41. void wypisz(struct element *poczatek)
  42. {
  43.     struct element *iterator=poczatek;
  44.     while(iterator!=NULL)
  45.     {
  46.         printf("[wiersz: %d kolumna: %d] wartosc: %.2lf\n",iterator->wiersz,iterator->kolumna,iterator->wartosc);
  47.         iterator=iterator->wsk;
  48.     }
  49. }
  50.  
  51. void min_max(const struct element *poczatek,double *min,double *max)
  52. {
  53.     struct element *iterator=poczatek;
  54.     double tmp_min,tmp_max;
  55.     tmp_min=poczatek->wartosc;
  56.     tmp_max=poczatek->wartosc;
  57.     while(iterator!=NULL)
  58.     {
  59.         if(iterator->wartosc>tmp_max)
  60.         {
  61.             tmp_max=iterator->wartosc;
  62.         }
  63.         else if(iterator->wartosc<tmp_min)
  64.         {
  65.             tmp_min=iterator->wartosc;
  66.         }
  67.  
  68.         iterator=iterator->wsk;
  69.     }
  70.     *min=tmp_min;
  71.     *max=tmp_max;
  72. }
  73.  
  74. int main()
  75. {
  76.     double tablica[WIERSZE][KOLUMNY];
  77.     int i,j;
  78.  
  79.     for(i=0;i<WIERSZE;i++)
  80.     {
  81.         for(j=0;j<KOLUMNY;j++)
  82.         {
  83.             printf("Podaj wartosc (%d. wiersz %d. kolumna): ",i+1,j+1);
  84.             scanf("%lf",&tablica[i][j]);
  85.             getchar();
  86.         }
  87.     }
  88.  
  89.     struct element *poczatek=NULL;
  90.  
  91.     for(i=0;i<WIERSZE;i++)
  92.     {
  93.         for(j=0;j<KOLUMNY;j++)
  94.         {
  95.             dodaj_element(i,j,tablica[i][j],&poczatek);
  96.         }
  97.     }
  98.  
  99.     wypisz(poczatek);
  100.  
  101.     double wartosc_najwieksza,wartosc_najmniejsza;
  102.  
  103.     min_max(poczatek,&wartosc_najmniejsza,&wartosc_najwieksza);
  104.  
  105.     printf("Wartosc najmniejsza: %.2lf\nWartosc najmniejsza: %.2lf\n",wartosc_najmniejsza,wartosc_najwieksza);
  106.  
  107.     return 0;
  108. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement