Advertisement
Guest User

Untitled

a guest
Mar 31st, 2020
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.77 KB | None | 0 0
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include<string.h>
  4. #include<time.h>
  5.  
  6. float frand(float min, float max){
  7.     float r = (float) rand()/RAND_MAX;
  8.     return r*(max-min) + min;
  9. }
  10.  
  11. void tab_rand(float **tab, int n, int m, float min, float max){
  12.     int i, j;
  13.     tab = (float**)tab;
  14.     for(i = 0; i < n; i++){
  15.         for(j = 0; j < m; j++){
  16.             tab[i][j] = frand(min, max);
  17.         }
  18.     }
  19. }
  20.  
  21.  
  22. void bubble_sort(void *p, int n){
  23.     int i, j;
  24.     int* ptr = (int*)p;
  25.     for(i = 0; i < n-1; i++){
  26.         for(j = 0; j < n-i-1; j++){
  27.             if(ptr[j] > ptr[j+1]){
  28.                 ptr[j] += ptr[j+1];
  29.                 ptr[j+1] = ptr[j] - ptr[j+1];
  30.                 ptr[j] -= ptr[j+1];
  31.             }
  32.         }
  33.     }
  34. }
  35.  
  36. void normalize(void *tab, int n){
  37.     int i;
  38.     float *p, sum=0;
  39.    
  40.     p = (float*)tab;
  41.  
  42.     for(i = 0; i < n; i++){
  43.         sum += p[i];
  44.     }
  45.     for(i = 0; i < n; i++){
  46.         *p /= sum;
  47.     }
  48.     tab = p;
  49.    
  50. }
  51.  
  52. void print_array(void *tab, int n){
  53.     float *p;
  54.     p = tab;
  55.     int i = 0;
  56.     for(i = 0; i < n; i++){
  57.         printf("%.3f ", p[i]);
  58.     }
  59.     printf("\n");
  60. }
  61.  
  62.  
  63.  
  64. void** Allocate(void** tab, const char* typ, int n, int m){
  65.     int i;
  66.    
  67.     if(!strcmp(typ, "int")){
  68.         int** tab = (int**)malloc(n*sizeof(int*));
  69.         for(i = 0; i < n; i++){
  70.             tab[i] = (int*)malloc(m*sizeof(int ));
  71.         }
  72.         if(!tab){
  73.             exit(-1);
  74.         }
  75.         for(i = 0; i < n; i++){
  76.             bubble_sort(tab[i], m);
  77.         }
  78.         // sortowanie
  79.  
  80.     }
  81.     else if(!strcmp(typ, "float")){
  82.         float** tab = (float**)malloc(n*sizeof(float*));
  83.         for(i = 0; i < n; i++){
  84.             tab[i] = (float*)malloc(m*sizeof(float ));
  85.         }
  86.         if(!tab){
  87.             exit(-1);
  88.         }
  89.         for(i = 0; i < n; i++){
  90.             bubble_sort(tab[i], m);
  91.         }
  92.         for(i = 0; i < n; i++){
  93.             normalize(tab[i], m);
  94.         }
  95.  
  96.         // sortowanie
  97.        
  98.  
  99.     }
  100.     else if(!strcmp(typ, "double")){
  101.         double** tab = (double**)malloc(n*sizeof(double*));
  102.         for(i = 0; i < n; i++){
  103.             tab[i] = (double*)malloc(m*sizeof(double ));
  104.         }
  105.         if(!tab){
  106.             exit(-1);
  107.         }
  108.         for(i = 0; i < n; i++){
  109.             bubble_sort(tab[i], m);
  110.         }
  111.         for(i = 0; i < n; i++){
  112.             normalize(tab[i], m);
  113.         }
  114.  
  115.         // sortowanie
  116.  
  117.     }
  118.     return tab;
  119.  
  120. }
  121.  
  122. int main(int argc, char **argv){
  123.     srand(time(0));
  124.     int wiersze = atoi(argv[1]), kolumny = atoi(argv[2]), min = atoi(argv[4]), max = atoi(argv[5]);
  125.     const char *typ = argv[3];
  126.     float sum = 0;
  127.     int i, j;
  128.     void** tab = Allocate(tab, typ,wiersze, kolumny);
  129.        
  130.    
  131.     free(tab);
  132. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement