Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Ввод-вывод верхнего уровня С++

даниил мисинев Профи (695), на голосовании 1 год назад
Задание:
Необходимо помнить, что данная лабораторная работа выполняется с Двухмерными массивами, а это сложный тип данных. Необходимо реализовать хранение именно матриц, а не набор чисел, которые вы потом просто столбиком напечатаете. Дл этого необходимо сначала хранить в файле размеры матриц, и только потом – элементы. При считывании , сначала считывается размеры, потом выделяется по ним память и только потом – туда считываются элементы массива.
Если файл используется как хранилище данных между запусками программы, то необходимо реализовать работу с ним по определенному шаблону:
1. Необходимо сделать проверку – существует ли файл, из которого вы собрались брать данные.
2. Если его нет, или его длина 0 байт, необходимо сообщить об этом пользователю программы и предложить создать новый файл с данными. В режиме диалога необходимо заполнить столько данных, сколько хочет пользователь. Данные необходимо записать в файл с тем же именем, что и файл для чтения. После этого с файлом можно работать.
3. Если файл существует и там есть данные, то необходимо считать эти данные и вывести на экран. ( продемонстрировать). И предложить пользователи или переписать файл и дозаписать его.
4. Не забыть после любой работы с файлом, файл надо закрыть.
Лабораторная,из которой надо сделать задание:
 #include  
#include
#include
using namespace std;
int** transpose(int **mas,int n,int m);
void wmas(int **mas, int n,int m);
void rmas(int **mas, int n,int m);
int** func(int n,int m);

int** transpose(int **mas,int n,int m)
{int** B;
B=func(m,n);
int i,j,t;
for( i = 0; i < n; ++i)
{
for( j = 0; j < m; ++j)
{
B[j][i] = mas[i][j];

}
}
return B;
}

void wmas(int **mas, int n,int m)
{
int i,j;
for (i = 0; i < n; i++)
for( j = 0; j < m; ++j)
mas[i][j] = rand() % 201 - 100;
}

void rmas(int **mas, int n,int m)
{
int i,j;
for ( i = 0; i < n; i++)
{
for( j = 0; j < m; ++j)
cout << mas[i][j] << " \t";
cout << endl;
}

}
int** func(int n,int m)
{
int **A;
A = new int*[n];
for (int i=0;i A[i]=new int [m];
return A;
}
int main()
{
setlocale(0, "");
int **A,n,m,**B;
srand(time(0));
cout << "n= , m="< cin>>n>>m;
A=func(n,m);
wmas(A,n,m);
rmas(A,n,m);
B=transpose(A,n,m);
cout<<"Транспонированная матрица равна:"< rmas(B,m,n);
delete[]A;
}
Дополнен 1 год назад
Данный ответ ниже не является решением, жду решения, пожалуйста.
Голосование за лучший ответ
Denis Rustem Гуру (4482) 1 год назад
Для выполнения данной задачи необходимо использовать работу с файлами в С++. Для этого можно использовать классы 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) {
// Файл
даниил мисиневПрофи (695) 1 год назад
ваш код замечательный, спасибо, но только преподаватель не примет, потому что нужно использовать функции из stdio.h(fopen,fclose и другие)
даниил мисинев, он тебе другой ответ не даст, потому что и первый не его. Нейронка сгенерировала и все.
Похожие вопросы