Vladibas

Main prog

Apr 1st, 2023
943
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.05 KB | Cybersecurity | 0 0
  1. #include <cstdio>
  2. #include <windows.h>
  3.  
  4. #include "unit.h"
  5.  
  6. using namespace std;
  7.  
  8.  
  9. int main(int argc, char **argv) {
  10.     SetConsoleOutputCP(1251);
  11.  
  12.     int n, m;
  13.     int **mtrx;
  14.     int *arr;
  15.  
  16.     // Open files
  17.     FILE *inp_file, *out_file;
  18.  
  19.     inp_file = fopen(argv[1], "r");
  20.     if (inp_file == NULL) {
  21.         printf("Невозможно открыть файл, с исходными данными\n");
  22.         return 0;
  23.     }
  24.  
  25.     out_file = fopen(argv[2], "w");
  26.     if (out_file == NULL) {
  27.         printf("Невозможно открыть файл для записи результатов\n");
  28.         fclose(inp_file);
  29.         return 0;
  30.     }
  31.  
  32.     // Read data
  33.     fscanf(inp_file, "%d %d\n", &n, &m);
  34.     if (n < 1) {
  35.         printf("Размер матрицы должен быть больше 0\n");
  36.         fclose(inp_file);
  37.         fclose(out_file);
  38.         return 0;
  39.     }
  40.    
  41.     if (m < 1) {
  42.         printf("Размер массива должен быть больше 0\n");
  43.         fclose(inp_file);
  44.         fclose(out_file);
  45.         return 0;
  46.     }
  47.  
  48.     // Initialize matrix and array
  49.     mtrx = new int *[n];
  50.     for (int i = 0; i < n; i++)
  51.         mtrx[i] = new int [n];
  52.     arr = new int [m];
  53.  
  54.     // Read matrix and array
  55.     read_matrix(inp_file, n, mtrx);
  56.     read_array(inp_file, m, arr);
  57.  
  58.     // Write using data
  59.     fprintf(out_file, "Исходные данные:\n");
  60.     fprintf(out_file, "%d %d\n", n, m);
  61.     write_matrix(out_file, n, mtrx);
  62.     write_array(out_file, m, arr);
  63.  
  64.     // Process data
  65.     int pos_sum = get_posi_sum_of_matrix(mtrx, n);
  66.     int neg_sum = get_neg_sum_of_array(arr, m);
  67.  
  68.     if (pos_sum > number_module(neg_sum)) {
  69.         for (int i = 0; i < n; i++)
  70.             for (int j = 0; j < n; j++)
  71.                 mtrx[i][j] += pos_sum;
  72.  
  73.         for (int i = 0; i < m; i++)
  74.             arr[i] += pos_sum;
  75.     }
  76.  
  77.     // Write data
  78.     fprintf(out_file, "\nОбработанные данные:\n");
  79.     fprintf(out_file, "%d %d\n", pos_sum, neg_sum);
  80.     write_matrix(out_file, n, mtrx);
  81.     write_array(out_file, m, arr);
  82.  
  83.     // Close files
  84.     fclose(inp_file);
  85.     fclose(out_file);
  86.  
  87.     // Clear memory
  88.     delete [] arr;
  89.     for (int i = 0; i < n; i++)
  90.         delete [] mtrx[i];
  91.     delete [] mtrx;
  92.  
  93.     return 0;
  94. }
Advertisement
Add Comment
Please, Sign In to add comment