Advertisement
Qellex

7.2 в - 11

May 16th, 2021
126
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.89 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <malloc.h>
  4. #include <locale.h>
  5.  
  6. int main() {
  7.  
  8. setlocale(LC_ALL, "rus");
  9.  
  10. FILE* fp;
  11. int n = 5; // размерность матрицы
  12. if (fopen_s(&fp, "arr.bin", "wb") != 0) { // Открытие файла для записи и проверка открылся ли он
  13. printf("Ошибка открытия файла!");
  14. system("pause");
  15. return 0;
  16. }
  17. else {
  18. int matrix[5][5] = { {1,2,3,4,5}, {0,1,2,3,4}, {0,0,1,2,3}, {0,0,0,1,2}, {0,0,0,0,1} }; // Исходная марица
  19. fwrite(&matrix, sizeof(int), n*n, fp); // записываем матрицу в бинарный файл
  20. printf("Исходная матрица:\n");
  21. for (int i = 0; i < n; i++) { // Вывод исходной матрицы
  22. for (int j = 0; j < n; j++)
  23. printf("%d ", matrix[i][j]);
  24. printf("\n");
  25. }
  26. }
  27.  
  28. if (fclose(fp) != 0) // Закрытие файла и проверка
  29. printf("Ошибка закрытия файла");
  30.  
  31. if (fopen_s(&fp, "arr.bin", "rb") != 0) { // Открытие файла для чтения и проверка открылся ли он
  32. printf("Ошибка открытия файла!");
  33. system("pause");
  34. return 0;
  35. }
  36.  
  37. int** a = (int**)malloc(n * sizeof(int*)); // Выделение памяти под двумерный массив
  38. for (int i = 0; i < n; i++)
  39. a[i] = (int*)malloc(n * sizeof(int));
  40.  
  41. for (int i = 0; i < n; i++) // Заполнение массива матрицой из файла
  42. fread(a[i], sizeof(int), n, fp);
  43.  
  44. if (fclose(fp) != 0) // Закрытие файла и проверка
  45. printf("Ошибка закрытия файла");
  46.  
  47. if (fopen_s(&fp, "arr.bin", "wb") != 0) { // Открытие файла для записи и проверка открылся ли он
  48. printf("Ошибка открытия файла!");
  49. system("pause");
  50. return 0;
  51. }
  52.  
  53. printf("Матрица без нулей:\n");
  54. for (int j = 0; j < n; j++) { // Запись транспонированной матрицы в файл
  55. for (int i = 0; i < n; i++) {
  56. if (a[j][i] != 0) { // Если не нуль то записываем это число
  57. fwrite(&a[j][i], sizeof(int), 1, fp);
  58. printf("%d ", a[j][i]);
  59. }
  60. }
  61. printf("\n");
  62. }
  63.  
  64. if (fclose(fp) != 0) // Закрытие файла и проверка
  65. printf("Ошибка закрытия файла");
  66.  
  67. system("pause");
  68. return 0;
  69. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement