Advertisement
Guest User

Untitled

a guest
Apr 23rd, 2017
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.73 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. free(a);free(b);
  108. return 0;
  109. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement