часто встречаю подобные задачи, вот один из способов реализации
отмечу только, что раз мы считываем матрицу из файла - то мы заранее
не знаем ее размер, а раз так - то память под неё мы выделяем динамически
с помощью оператора 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
Комментариев нет:
Отправить комментарий