Вывести коэффициенты матрицы из файла - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Нужно сделать так, чтобы вводились коэффициенты матрицы. В программе вводится размер матрицы 'm', далее должна вводиться сама матрица, которая, естественно, зависит от 'm'. И, наконец, ввести столбец свободных членов.
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;
Как это сделать? При выводе он считывает из файла 'm' и коэф.матрицы, но они все равны 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;
}

Объяснение кода листинга программы

Выводим коэффициенты матрицы из файла:

  1. Объявляем переменные:
    • FILE *f - указатель на файл;
    • int n - количество строк матрицы;
    • int i, j - индексы матрицы;
    • int **matrix - двумерный массив (матрица).
  2. Открываем файл input.txt для чтения или output.txt для записи.
  3. Считываем количество строк матрицы с помощью fscanf(f,%d, &n);.
  4. Выделяем память под матрицу с помощью matrix = (int**)calloc (n, sizeof(int*)); и matrix[i] = (int*)calloc (n, sizeof(int));.
  5. Считываем коэффициенты матрицы с помощью цикла for (j=0; j < n && fscanf(f,%d, &matrix[i][j]); j++).
  6. Выводим коэффициенты на экран с помощью printf(%d , matrix[i][j]);.
  7. Добавляем новую строку с помощью printf(\n);.
  8. Закрываем файл fclose(f);.
  9. Открываем файл output.txt для записи.
  10. Выводим количество строк матрицы с помощью fprintf(f,%d\n, n);.
  11. Считываем коэффициенты матрицы с помощью цикла for (i=0; i < n; i++).
  12. Выводим коэффициенты на экран с помощью fprintf(f,%d , matrix[i][j]);.
  13. Добавляем новую строку с помощью fprintf(f,\n);.
  14. Освобождаем память с помощью free(matrix[i]);.
  15. Освобождаем память с помощью free(matrix);.
  16. Закрываем файл fclose(f);.
  17. Возвращаем 0, чтобы указать, что программа успешно завершилась.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4.125 из 5
Похожие ответы