Advertisement
Qellex

7.2 v20

May 25th, 2022
643
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <malloc.h>
  4. #include <locale.h>
  5. int main() {
  6.     setlocale(LC_ALL, "rus");
  7.     FILE* fp;
  8.     int N[2]; // N[0] - количество строк, N[1] - количество столцов
  9.     if (fopen_s(&fp, "arr.bin", "wb") != 0) {
  10.         printf("Ошибка открытия файла!");
  11.         system("pause");
  12.         return 0;
  13.     }
  14.     else {
  15.         int n = 4, m = 5;
  16.         float matrix[4][5] = { {0,2.5,0,8.5,9.5}, {3,4,2.3,0.5,0.5}, {-5.0,6,0,2.5,5.5},
  17.        {0.5,-0.3,-7.9,6.7,8.5} };
  18.         fwrite(&n, sizeof(int), 1, fp);
  19.         fwrite(&m, sizeof(int), 1, fp);
  20.         fwrite(&matrix, sizeof(float), n * m, fp);
  21.         printf("Исходная матрица:\n");
  22.         for (int i = 0; i < n; i++) {
  23.             for (int j = 0; j < m; j++)
  24.                 printf("%.2f ", matrix[i][j]);
  25.             printf("\n");
  26.         }
  27.     }
  28.     if (fclose(fp) != 0)
  29.         printf("Ошибка закрытия файла");
  30.     if (fopen_s(&fp, "arr.bin", "rb") != 0) {
  31.         printf("Ошибка открытия файла!");
  32.         system("pause");
  33.         return 0;
  34.     }
  35.     fread(N, sizeof(int), 2, fp);
  36.     float** a = (float**)malloc(N[0] * sizeof(float*));
  37.     for (int i = 0; i < N[0]; i++)
  38.         a[i] = (float*)malloc(N[1] * sizeof(float));
  39.     for (int i = 0; i < N[0]; i++)
  40.         fread(a[i], sizeof(float), N[1], fp);
  41.     if (fclose(fp) != 0)
  42.         printf("Ошибка закрытия файла");
  43.     if (fopen_s(&fp, "arr.bin", "wb") != 0) {
  44.         printf("Ошибка открытия файла!");
  45.         system("pause");
  46.         return 0;
  47.     }
  48.     printf("Транспонированная матрица:\n");
  49.     fwrite(&N[1], sizeof(int), 1, fp);
  50.     fwrite(&N[0], sizeof(int), 1, fp);
  51.     for (int i = 0; i < N[0]; i++) {
  52.         for (int j = 0; j < N[1]; j++) {
  53.             if (a[i][j] != 0) {
  54.                 fprintf(fp, "%.2f {%d, %d}, ", &a[i][j], &i, &j);
  55.                 printf("%.2f {%d, %d} \n", a[i][j], i, j);
  56.             }
  57.         }
  58.     }
  59.     for (int i = 0; i < N[0]; i++) {
  60.         free(a[i]);
  61.     }
  62.     free(a);
  63.     if (fclose(fp) != 0)
  64.         printf("Ошибка закрытия файла");
  65.     system("pause");
  66.     return 0;
  67. }
Advertisement
RAW Paste Data Copied
Advertisement