Advertisement
EvgeniiKraaaaaaaav

FILE_WORK_MATRIX_SUM

Mar 11th, 2019
172
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.75 KB | None | 0 0
  1. //https://vk.com/evgenykravchenko0
  2.  
  3.                 ___                                        ___                   ___    
  4.                /  /\                  ___                 /  /\                 /  /\    
  5.               /  /:/_                /__/\               /  /:/_               /  /:/_  
  6.              /  /:/ /\               \  \:\             /  /:/ /\             /  /:/ /\  
  7.             /  /:/ /:/_               \  \:\           /  /:/_/::\           /  /:/ /:/_
  8.            /__/:/ /:/ /\          ___  \__\:\         /__/:/__\/\:\         /__/:/ /:/ /\
  9.            \  \:\/:/ /:/         /__/\ |  |:|         \  \:\ /~~/:/         \  \:\/:/ /:/
  10.             \  \::/ /:/          \  \:\|  |:|          \  \:\  /:/           \  \::/ /:/
  11.              \  \:\/:/            \  \:\__|:|           \  \:\/:/             \  \:\/:/  
  12.               \  \::/              \__\::::/             \  \::/               \  \::/  
  13.                \__\/                   ~~~~               \__\/                 \__\/    
  14.                             ___                                            
  15.                            /__/\                ___                 ___    
  16.                            \  \:\              /  /\               /  /\    
  17.                             \  \:\            /  /:/              /  /:/    
  18.                         _____\__\:\          /__/::\             /__/::\    
  19.                        /__/::::::::\         \__\/\:\__          \__\/\:\__
  20.                        \  \:\~~\~~\/            \  \:\/\            \  \:\/\
  21.                         \  \:\  ~~~              \__\::/             \__\::/
  22.                          \  \:\                  /__/:/              /__/:/
  23.                           \  \:\                 \__\/               \__\/  
  24.                            \__\/                      
  25. #include<stdio.h>
  26. #include<malloc.h>
  27. #include<stdlib.h>
  28. #include<math.h>
  29.  
  30. #define A_elem  *(*(a + size * i) + j)
  31. #define B_elem  *(*(b + size * i) + j)
  32. #define C_elem  *(*(c + size * i) + j)
  33. #define E_elem  *(*(e + size * i) + j)
  34.  
  35. int size = 0;
  36. int **a = NULL;
  37. int **b = NULL;
  38. int **c = NULL;
  39. int **e = NULL;
  40.  
  41.  
  42. int read_matrix ( char *input_name);
  43. int print_matrix ( int **matrix, int size);
  44. int calc_B ( int size);
  45. int calc_E ( int size);
  46. int calc_C ( int **matrix_A, int **matrix_B, int **matrix_E, int size);
  47. int write_matrix ( char *output_name, int **matrix_C, int size);
  48.  
  49. int main()
  50. {  
  51.     char *input_name;
  52.     char *output_name;
  53.    
  54.     input_name = (char*)malloc(20 * sizeof(char));
  55.     output_name = (char*)malloc(20 * sizeof(char));
  56.  
  57.     printf("Enter name of file with matrix A : ");
  58.     scanf("%s", input_name);
  59.     read_matrix(input_name);
  60.     print_matrix(a, size);
  61.     calc_B(size);
  62.     print_matrix(b, size);
  63.     calc_E(size);
  64.     print_matrix(e, size);
  65.     calc_C(a, b, e, size);
  66.     print_matrix(c, size);
  67.     printf("\n Enter name of output file to write result : ");
  68.     scanf("%s", output_name);
  69.     write_matrix(output_name, c, size);
  70.  
  71.  
  72.     return 0;
  73.    
  74. }
  75.  
  76. int read_matrix ( char *input_name)
  77. {
  78.     FILE *file;
  79.     file = fopen(input_name, "r");
  80.     if (file == NULL)
  81.     {
  82.         printf("Can't create file \n");
  83.         return 1;
  84.     }
  85.     else
  86.     {
  87.         printf("File %s successfully opened or created. \n", input_name);
  88.         printf("Program calc matrix sum : C = 2A + B + 2E ,where E is the identity matrix \n");
  89.         fscanf(file, " %d ", &size);
  90.  
  91.         a = (int**)malloc(size * sizeof(int*));
  92.  
  93.         printf("\n ** Matrix A ** \n");
  94.  
  95.         for ( int i = 0; i < size; i++)
  96.         {
  97.             *(a + size * i) = (int*)malloc(size * sizeof(int));
  98.             for ( int j = 0; j < size; j++)
  99.             {
  100.                 fscanf(file, "%d", (*(a + size * i) + j));
  101.             }
  102.         }
  103.        
  104.     }
  105.    
  106.  
  107.     return 0;
  108. }
  109.  
  110. int print_matrix ( int **matrix, int size)
  111. {
  112.     for ( int i = 0; i < size; i++)
  113.     {
  114.         for ( int j = 0; j < size; j++)
  115.         {
  116.             printf(" %5d ", *(*(matrix + size * i) + j));
  117.         }
  118.         printf("\n");
  119.     }
  120.  
  121.     return 0;
  122. }
  123.  
  124. int calc_B ( int size)
  125. {
  126.     b = (int**)malloc(size * sizeof(int*));
  127.  
  128.     printf("\n ** Matrix B ** \n");
  129.  
  130.     for ( int i = 0; i < size; i++)
  131.     {
  132.         *(b + size * i) = (int*)malloc(size * sizeof(int));
  133.          for ( int j = 0; j < size; j++)
  134.          {
  135.              B_elem = (i + j) / (2 + (i - j) * (i - j));
  136.         }
  137.     }
  138.  
  139.     return 0;
  140. }
  141.  
  142. int calc_E ( int size)
  143. {
  144.     e = (int**)malloc(size * sizeof(int*));
  145.  
  146.     printf("\n ** Matrix E ** \n");
  147.  
  148.     for ( int i = 0, j = 0; i < size, j < size; i++, j++)
  149.     {
  150.         *(e + size * i) = (int*)malloc(size * sizeof(int));
  151.         E_elem = 1;
  152.     }
  153.  
  154.     return 0;
  155. }
  156. int calc_C ( int **matrix_A, int **matrix_B, int **matrix_E, int size)
  157. {
  158.     c = (int**)malloc(size * sizeof(int*));
  159.  
  160.     printf("\n ** Matrix C ** \n");
  161.  
  162.     for ( int i = 0; i < size; i++)
  163.     {
  164.         *(c + size * i) = (int*)malloc(size * sizeof(int));
  165.         for ( int j = 0; j < size; j++)
  166.         {
  167.             C_elem = 2 * A_elem + B_elem + 2 * E_elem;
  168.         }
  169.     }
  170.  
  171.     return 0;
  172. }
  173.  
  174. int write_matrix ( char *output_name, int **matrix_C, int size)
  175. {
  176.     FILE *resfile;
  177.     resfile = fopen(output_name, "w");
  178.     if (resfile == NULL)
  179.     {
  180.         printf("\n Can't create file \n");
  181.         return 1;
  182.     }
  183.     else
  184.     {
  185.         printf("\n File %s successfully created", output_name);
  186.  
  187.         for ( int i = 0; i < size; i++)
  188.         {
  189.             for ( int j = 0; j < size; j++)
  190.             {
  191.                 fprintf(resfile, "%5d ", C_elem);
  192.             }
  193.             fprintf(resfile, "\n");
  194.         }
  195.         printf("\n Result successfully recorded \n");
  196.        
  197.     }
  198.     return 0;
  199. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement