Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <time.h>
- void randomize(int **a, int n, int r, int l){
- for (int i = 0; i < n; i++)
- for (int j = 0; j < n; j++)
- a[i][j] = r + rand()%(l - r);
- }
- void print1(int **a, int n){
- for (int i = 0; i < n; i++){
- for (int j = 0; j < n; j++)
- printf("%d ", a[i][j]);
- printf("\n");
- }
- }
- void printToFile(int **a, int n, FILE* Out){
- for (int i = 0; i < n; i++){
- for (int j = 0; j < n; j++)
- fprintf(Out, "%d ", a[i][j]);
- fprintf(Out, "\n");
- }
- }
- void readIntoFile(int **a, int n, FILE* Inp){
- for (int i = 0; i < n; i++){
- for (int j = 0; j < n; j++)
- fscanf(Inp, "%d", &a[i][j]);
- }
- }
- int** transonirovanie(int **a, int n){
- int **b;
- b = (int**)malloc(n*sizeof(int));
- for (int i = 0; i < n; i++)
- b[i] = (int*)malloc(n*sizeof(int));
- for (int i = 0; i < n; i++)
- for (int j = 0; j < n; j++)
- b[i][j] = a[j][i];
- return b;
- }
- int** summ(int **a, int **c, int n){
- int **b;
- b = (int**)malloc(n*sizeof(int));
- for (int i = 0; i < n; i++)
- b[i] = (int*)malloc(n*sizeof(int));
- for (int i = 0; i < n; i++)
- for (int j = 0; j < n; j++)
- b[i][j] = a[i][j] + c[i][j];
- return b;
- }
- int** mul(int **a, int **c, int n){
- int **b;
- b = (int**)malloc(n*sizeof(int));
- for (int i = 0; i < n; i++)
- b[i] = (int*)malloc(n*sizeof(int));
- for (int i = 0; i < n; i++)
- for (int j = 0; j < n; j++) {
- int m = 0;
- for (int k = 0; k < n; k++)
- m += (a[i][k] * a[k][j]);
- b[i][j] = m;
- }
- return b;
- }
- int** powm(int **a, int n, int k){
- int **b;
- b = (int**)malloc(n*sizeof(int));
- for (int i = 0; i < n; i++)
- b[i] = (int*)malloc(n*sizeof(int));
- int **c;
- c = (int**)malloc(n*sizeof(int));
- for (int i = 0; i < n; i++)
- c[i] = (int*)malloc(n*sizeof(int));
- b = a;
- for (int i = 0; i < k - 1; i++) {
- c = mul(b, a, n);
- b = c;
- }
- return b;
- }
- int main(int argc, char const *argv[]){
- int n = 3;
- int **a;
- int **b;
- FILE *Out;
- FILE *Inp;
- Out = fopen("myfile.txt", "w");
- Inp = fopen("asda.txt", "r");
- a = (int**)malloc(n*sizeof(int));
- for (int i = 0; i < n; i++)
- a[i] = (int*)malloc(n*sizeof(int));
- b = (int**)malloc(n*sizeof(int));
- for (int i = 0; i < n; i++)
- b[i]= (int*)malloc(n*sizeof(int));
- int r = -1, l = 3;
- srand(time(NULL));
- randomize(a, n, r, l);
- readIntoFile(b, n, Inp);
- print1(mul(transonirovanie(b, n), powm(b, n, 2), n), n);
- free(a);free(b);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement