Advertisement
Guest User

Untitled

a guest
Apr 23rd, 2017
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.71 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4.  
  5. void randomize(int **a, int n, int r, int l){
  6.     for (int i = 0; i < n; i++)
  7.         for (int j = 0; j < n; j++)
  8.             a[i][j] = r + rand()%(l - r);
  9. }
  10.  
  11. void print1(int **a, int n){
  12.     for (int i = 0; i < n; i++){
  13.         for (int j = 0; j < n; j++)
  14.             printf("%d ", a[i][j]);
  15.         printf("\n");
  16.     }
  17. }
  18.  
  19. void printToFile(int **a, int n, FILE* Out){
  20.   for (int i = 0; i < n; i++){
  21.     for (int j = 0; j < n; j++)
  22.         fprintf(Out, "%d ", a[i][j]);
  23.     fprintf(Out, "\n");
  24.   }
  25. }
  26.  
  27. void readIntoFile(int **a, int n, FILE* Inp){
  28.   for (int i = 0; i < n; i++){
  29.     for (int j = 0; j < n; j++)
  30.         fscanf(Inp, "%d", &a[i][j]);
  31.   }
  32. }
  33.  
  34. int** transonirovanie(int **a, int n){
  35.     int **b;
  36.     b = (int**)malloc(n*sizeof(int));
  37.     for (int i = 0; i < n; i++)
  38.         b[i] = (int*)malloc(n*sizeof(int));
  39.     for (int i = 0; i < n; i++)
  40.         for (int j = 0; j < n; j++)
  41.             b[i][j] = a[j][i];
  42.     return b;
  43. }
  44.  
  45. int** summ(int **a, int **c, int n){
  46.     int **b;
  47.     b = (int**)malloc(n*sizeof(int));
  48.     for (int i = 0; i < n; i++)
  49.         b[i] = (int*)malloc(n*sizeof(int));
  50.     for (int i = 0; i < n; i++)
  51.         for (int j = 0; j < n; j++)
  52.             b[i][j] = a[i][j] + c[i][j];
  53.     return b;
  54. }
  55.  
  56. int** mul(int **a, int **c, int n){
  57.     int **b;
  58.     b = (int**)malloc(n*sizeof(int));
  59.     for (int i = 0; i < n; i++)
  60.         b[i] = (int*)malloc(n*sizeof(int));
  61.     for (int i = 0; i < n; i++)
  62.         for (int j = 0; j < n; j++) {
  63.             int m = 0;
  64.             for (int k = 0; k < n; k++)
  65.                 m += (a[i][k] * a[k][j]);
  66.                 b[i][j] = m;
  67.         }
  68.     return b;
  69. }
  70.  
  71. int** powm(int **a, int n, int k){
  72.     int **b;
  73.     b = (int**)malloc(n*sizeof(int));
  74.     for (int i = 0; i < n; i++)
  75.         b[i] = (int*)malloc(n*sizeof(int));
  76.     int **c;
  77.     c = (int**)malloc(n*sizeof(int));
  78.     for (int i = 0; i < n; i++)
  79.         c[i] = (int*)malloc(n*sizeof(int));
  80.     b = a;
  81.     for (int i = 0; i < k - 1; i++) {
  82.         c = mul(b, a, n);
  83.         b = c;
  84.     }
  85.     return b;
  86. }
  87.  
  88. int main(int argc, char const *argv[]){
  89.     int n = 3;
  90.     int **a;
  91.     int **b;
  92.     FILE *Out;
  93.     FILE *Inp;
  94.     Out = fopen("myfile.txt", "w");
  95.     Inp = fopen("asda.txt", "r");
  96.     a = (int**)malloc(n*sizeof(int));
  97.     for (int i = 0; i < n; i++)
  98.         a[i] = (int*)malloc(n*sizeof(int));
  99.     b = (int**)malloc(n*sizeof(int));
  100.     for (int i = 0; i < n; i++)
  101.         b[i]= (int*)malloc(n*sizeof(int));
  102.     int r = -1, l = 3;
  103.     srand(time(NULL));
  104.     randomize(a, n, r, l);
  105.     readIntoFile(b, n, Inp);
  106.     print1(mul(transonirovanie(b, n), powm(b, n, 2), n), n);
  107.     return 0;
  108. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement