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