Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <malloc.h>
- #include <locale.h>
- int main() {
- setlocale(LC_ALL, "rus");
- FILE* fp;
- int N[2]; // N[0] - количество строк, N[1] - количество столцов
- if (fopen_s(&fp, "arr.bin", "wb") != 0) {
- printf("Ошибка открытия файла!");
- system("pause");
- return 0;
- }
- else {
- int n = 4, m = 5;
- 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},
- {0.5,-0.3,-7.9,6.7,8.5} };
- fwrite(&n, sizeof(int), 1, fp);
- fwrite(&m, sizeof(int), 1, fp);
- fwrite(&matrix, sizeof(float), n * m, fp);
- printf("Исходная матрица:\n");
- for (int i = 0; i < n; i++) {
- for (int j = 0; j < m; j++)
- printf("%.2f ", matrix[i][j]);
- printf("\n");
- }
- }
- if (fclose(fp) != 0)
- printf("Ошибка закрытия файла");
- if (fopen_s(&fp, "arr.bin", "rb") != 0) {
- printf("Ошибка открытия файла!");
- system("pause");
- return 0;
- }
- fread(N, sizeof(int), 2, fp);
- float** a = (float**)malloc(N[0] * sizeof(float*));
- for (int i = 0; i < N[0]; i++)
- a[i] = (float*)malloc(N[1] * sizeof(float));
- for (int i = 0; i < N[0]; i++)
- fread(a[i], sizeof(float), N[1], fp);
- if (fclose(fp) != 0)
- printf("Ошибка закрытия файла");
- if (fopen_s(&fp, "arr.bin", "wb") != 0) {
- printf("Ошибка открытия файла!");
- system("pause");
- return 0;
- }
- printf("Транспонированная матрица:\n");
- fwrite(&N[1], sizeof(int), 1, fp);
- fwrite(&N[0], sizeof(int), 1, fp);
- for (int i = 0; i < N[0]; i++) {
- for (int j = 0; j < N[1]; j++) {
- if (a[i][j] != 0) {
- fprintf(fp, "%.2f {%d, %d}, ", &a[i][j], &i, &j);
- printf("%.2f {%d, %d} \n", a[i][j], i, j);
- }
- }
- }
- for (int i = 0; i < N[0]; i++) {
- free(a[i]);
- }
- free(a);
- if (fclose(fp) != 0)
- printf("Ошибка закрытия файла");
- system("pause");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement