Denis Rustem
Мастер
(2065)
2 месяца назад
Для выполнения данной задачи необходимо использовать работу с файлами в С++. Для этого можно использовать классы fstream или ifstream/ofstream.
Пример использования класса fstream:
#include <fstream>
#include <iostream>
int main()
{
std::fstream file("data.txt", std::ios::in | std::ios::out | std::ios::app);
if (!file) {
// Файл не существует или не удалось его открыть
std::cout << "Файл не существует или не удалось его открыть\n";
return 1;
}
// Чтение размеров матрицы из файла
int n, m;
file >> n >> m;
// Выделение памяти для матрицы
int** matrix = new int*[n];
for (int i = 0; i < n; ++i) {
matrix[i] = new int[m];
}
// Чтение матрицы из файла
for (int i = 0; i < n; ++i) {
for (int j = 0; j < m; ++j) {
file >> matrix[i][j];
}
}
// Вывод матрицы на экран
std::cout << "Матрица из файла:\n";
for (int i = 0; i < n; ++i) {
for (int j = 0; j < m; ++j) {
std::cout << matrix[i][j] << '\t';
}
std::cout << '\n';
}
// Закрытие файла
file.close();
return 0;
}
Пример использования классов ifstream/ofstream:
#include <fstream>
#include <iostream>
int main()
{
std::ifstream in_file("data.txt");
if (!in_file) {
// Файл не существует или не удалось его открыть
std::cout << "Файл не существует или не удалось его открыть\n";
return 1;
}
// Чтение размеров матрицы из файла
int n, m;
in_file >> n >> m;
// Выделение памяти для матрицы
int** matrix = new int*[n];
for (int i = 0; i < n; ++i) {
matrix[i] = new int[m];
}
// Чтение матрицы из файла
for (int i = 0; i < n; ++i) {
for (int j = 0; j < m; ++j) {
in_file >> matrix[i][j];
}
}
// Закрытие файла для чтения
in_file.close();
// Вывод матрицы на экран
std::cout << "Матрица из файла:\n";
for (int i = 0; i < n; ++i) {
for (int j = 0; j < m; ++j) {
std::cout << matrix[i][j] << '\t';
}
std::cout << '\n';
}
std::ofstream out_file("data.txt", std::ios::app);
if (!out_file) {
// Файл
даниил мисиневПрофи (634)
2 месяца назад
ваш код замечательный, спасибо, но только преподаватель не примет, потому что нужно использовать функции из stdio.h(fopen,fclose и другие)
Необходимо помнить, что данная лабораторная работа выполняется с Двухмерными массивами, а это сложный тип данных. Необходимо реализовать хранение именно матриц, а не набор чисел, которые вы потом просто столбиком напечатаете. Дл этого необходимо сначала хранить в файле размеры матриц, и только потом – элементы. При считывании , сначала считывается размеры, потом выделяется по ним память и только потом – туда считываются элементы массива.
Если файл используется как хранилище данных между запусками программы, то необходимо реализовать работу с ним по определенному шаблону:
1. Необходимо сделать проверку – существует ли файл, из которого вы собрались брать данные.
2. Если его нет, или его длина 0 байт, необходимо сообщить об этом пользователю программы и предложить создать новый файл с данными. В режиме диалога необходимо заполнить столько данных, сколько хочет пользователь. Данные необходимо записать в файл с тем же именем, что и файл для чтения. После этого с файлом можно работать.
3. Если файл существует и там есть данные, то необходимо считать эти данные и вывести на экран. ( продемонстрировать). И предложить пользователи или переписать файл и дозаписать его.
4. Не забыть после любой работы с файлом, файл надо закрыть.
Лабораторная,из которой надо сделать задание: