Вывести коэффициенты матрицы из файла - C (СИ)
Формулировка задачи:
Нужно сделать так, чтобы вводились коэффициенты матрицы. В программе вводится размер матрицы 'm', далее должна вводиться сама матрица, которая, естественно, зависит от 'm'. И, наконец, ввести столбец свободных членов.
Как это сделать? При выводе он считывает из файла 'm' и коэф.матрицы, но они все равны 0.
printf("You chose an input data from file\n\n"); float am,p,a[7][8]; int i,im,j,k,l,m,m1; { FILE *f; f = fopen("text.txt", "r"); fscanf(f, "%d ", &m); printf("Vvod 'm': %d\n", m); for(i=1;i<=m;i++) for(j=1;j<=m;j++) { fscanf(f, "%f", &p); printf("Vvod matritsi levoi chasti sistemi: %d \n" , p); } fclose(f); return 0;
Решение задачи: «Вывести коэффициенты матрицы из файла»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> int main(void) { FILE *f; int n, i, j; int **matrix; f = fopen("input.txt", "r"); if (!f) exit(1); fscanf(f, "%d", &n); matrix = (int**)calloc (n, sizeof(int*)); if (matrix == NULL) exit(2); for (i=0; i < n; i++) { matrix[i] = (int*)calloc (n, sizeof(int)); if (matrix[i] == NULL) exit(2); for (j=0; j < n && fscanf(f, "%d", &matrix[i][j]); j++) printf("%d ", matrix[i][j]); printf("\n"); } fclose(f); /* Г‡Г*ГЇГЁГ±Гј Гў ГґГ*éë */ f = fopen("output.txt", "w"); if (!f) exit(3); fprintf(f, "%d\n", n); for (i=0; i < n; i++) { for (j=0; j < n; j++) fprintf(f, "%d ", matrix[i][j]); fprintf(f, "\n"); free(matrix[i]); } free(matrix); fclose(f); return 0; }
Объяснение кода листинга программы
Выводим коэффициенты матрицы из файла:
- Объявляем переменные:
FILE *f
- указатель на файл;int n
- количество строк матрицы;int i, j
- индексы матрицы;int **matrix
- двумерный массив (матрица).
- Открываем файл
input.txt
для чтения илиoutput.txt
для записи. - Считываем количество строк матрицы с помощью
fscanf(f,
%d, &n);
. - Выделяем память под матрицу с помощью
matrix = (int**)calloc (n, sizeof(int*));
иmatrix[i] = (int*)calloc (n, sizeof(int));
. - Считываем коэффициенты матрицы с помощью цикла
for (j=0; j < n && fscanf(f,
%d, &matrix[i][j]); j++)
. - Выводим коэффициенты на экран с помощью
printf(
%d, matrix[i][j]);
. - Добавляем новую строку с помощью
printf(
\n);
. - Закрываем файл
fclose(f);
. - Открываем файл
output.txt
для записи. - Выводим количество строк матрицы с помощью
fprintf(f,
%d\n, n);
. - Считываем коэффициенты матрицы с помощью цикла
for (i=0; i < n; i++)
. - Выводим коэффициенты на экран с помощью
fprintf(f,
%d, matrix[i][j]);
. - Добавляем новую строку с помощью
fprintf(f,
\n);
. - Освобождаем память с помощью
free(matrix[i]);
. - Освобождаем память с помощью
free(matrix);
. - Закрываем файл
fclose(f);
. - Возвращаем 0, чтобы указать, что программа успешно завершилась.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д