понедельник, 10 мая 2010 г.

вывести матрицу из файла с++

вывести матрицу из файла с++

часто встречаю подобные задачи, вот один из способов реализации

отмечу только, что раз мы считываем матрицу из файла - то мы заранее
не знаем ее размер, а раз так - то память под неё мы выделяем динамически
с помощью оператора new (не забываем освобождать после использования)

и нужно придумать в каком виде хранить матрицу

создадим текстовый файл matrix.txt
с таким содержанием
2 3
1 2 3
4 5 6

в нем первая строка содержит два числа,
первое - количество строк матрицы, второе кол-во столбцов

#include <stdio.h>

int main(int argc, char * argv[])
{
 int n = 0;
 int m = 0;

 int **a;

 //открываем файл
 FILE * fp = fopen("matrix.txt", "r");
 if (fp)
 {
  //читаем количество строк и столбцов
  fscanf(fp, "%d %d", &n, &m);

  //выделяем место
  *a = new int(n);
  for (int i = 0; i < n; i++) a[i] = new int(m);

  //считываем данные из файла в матрицу
  for (int i = 0; i < n; i++)
  {
   for (int j = 0; j < m; j++)
   {
    fscanf(fp, "%d", &a[i][j]);
   }
  }
  
  //закрываем файл
  fclose(fp);
 }

 //печать матрицы
 for (int i = 0; i < n; i++)
 {
  for (int j = 0; j < m; j++)
  {
   printf("%d ", a[i][j]);
  }

  printf("\n");
 }

 //освобождение памяти
 for (int i = 0; i < n; i++) delete a[i];
 delete *a;


 return 0;
}

и вот вывод программы

1 2 3
4 5 6

Комментариев нет:

Отправить комментарий