Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > C++ > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail


Ответ
 
Опции темы
Старый 12.11.2019, 22:02   #1
Tier_Mia
Пользователь
 
Регистрация: 13.10.2019
Сообщений: 14
По умолчанию Помогите с работой с файлами

Код:
#include <iostream>
#include <fstream>
#include <sstream>
#include <vector>
#include <string>

using namespace std;



int main()
{
	int n = 0;
	int* matrix = new int[n * n];
	cout << "Write the name of your file " << endl;
	string path;
	cin >> path;
	fstream file;
	file.open(path, fstream::in | fstream::out | fstream::app);
	int i = 0;
	int j = 0;
	if (!file.is_open())
	{
		cout << "the file can`t be open" << endl;
	}

	else
	{
		cout << "Write 1 to write the matrix " << endl;
		cout << "Write 2 to receive the matrix " << endl;
		int amount;
		cin >> amount;
		int** matrix;
		matrix = new int* [n];
		if (amount == 1)
		{
			cout << " write your matrix " << endl;
			cout << "write the amount of your matrix lines and coluns" << endl;
			cin >> n;
			for (int i = 0; i < n; i++)
			matrix[i] = new int[n];

			for (int i = 0; i < n; i++) {
				for (int j = 0; j < n; j++) {
					cin >> matrix[i][j];
					file << matrix[i][j];
					file << " ";


				}
			}
			for (int i = 0; i < n; i++) {
				cout << endl;
				for (int j = 0; j < n; j++) {
					cout << matrix[i][j] << " ";
				}
			}
			
		}

		else if (amount == 2)
		{
			int** m;
			m = new int* [n];
			cout << "reading from the file " << endl;

			while (!file.eof())
			{
				for (int i = 0; i < n; ++i)
					for (int j = 0; j < n; ++j) {
						file >> m[i][j];
					}
			}
			
		}
		file.close();
	}
}


Задача такая: в файл ввести массив, а потом его вывести с этого же файла
Я могу создать файл, ввести туда числа. Числа вводятся не таблицей, а на строке через пробел
Проблема в том, что я не могу понять, как считать оттуда эту матрицу N*N, чтобы дальше найти детерминант
Помогите, пожалуйста, не получается вообще
Tier_Mia вне форума Ответить с цитированием
Старый 12.11.2019, 22:06   #2
Tier_Mia
Пользователь
 
Регистрация: 13.10.2019
Сообщений: 14
По умолчанию

Первый if - это проверка на открытие файла
Else if - работа с файлом, если он открылся. Тут есть if(amount ==1), который отвечает за заполнение массива и ввод в файл и else if, который отвечает за считание матрицы из файла( оно и не работает). В этом esse if я создал буферный массив, который теоретически должен принимать значение предыдущего
Tier_Mia вне форума Ответить с цитированием
Старый 12.11.2019, 22:07   #3
Tier_Mia
Пользователь
 
Регистрация: 13.10.2019
Сообщений: 14
По умолчанию

Как и что подправить ? Что неправильно?
Tier_Mia вне форума Ответить с цитированием
Старый 12.11.2019, 22:18   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,097
По умолчанию

Код:
			int** m;
			m = new int* [n];
Где выделение памяти?
Пишу программы на С++. ТЗ, цену и сроки на p51x.fr {@} яндекс.ру
p51x вне форума Ответить с цитированием
Старый 12.11.2019, 22:48   #5
Tier_Mia
Пользователь
 
Регистрация: 13.10.2019
Сообщений: 14
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Код:
			int** m;
			m = new int* [n];
Где выделение памяти?
Код:

int** m = new int* [n];
			for (int i = 0; i < n; i++)
				m[i] = new int[n];
Подправил, но нечего не изменилось

Последний раз редактировалось Tier_Mia; 12.11.2019 в 22:52.
Tier_Mia вне форума Ответить с цитированием
Старый 12.11.2019, 23:48   #6
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,097
По умолчанию

Ну так перемотайте файл в начало, seekg
Пишу программы на С++. ТЗ, цену и сроки на p51x.fr {@} яндекс.ру
p51x вне форума Ответить с цитированием
Старый 12.11.2019, 23:55   #7
Tier_Mia
Пользователь
 
Регистрация: 13.10.2019
Сообщений: 14
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Ну так перемотайте файл в начало, seekg
В смысле? Я же задал:
Код:

while (!file.eof())
Типа выходит после того, как я ввёл матрицу, программа считает, что я в конце файла?
Tier_Mia вне форума Ответить с цитированием
Старый 12.11.2019, 23:57   #8
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,097
По умолчанию

Цитата:
Сообщение от Tier_Mia Посмотреть сообщение
В смысле? Я же задал:
И? Прочитайте, что вы задали - пока не конец потока.

Цитата:
Сообщение от Tier_Mia Посмотреть сообщение
Типа выходит после того, как я ввёл матрицу, программа считает, что я в конце файла?
А где вы еще будете? Или вы вводите в рандомное место?

Цитата:
Сообщение от Tier_Mia Посмотреть сообщение
И какая тогда функция за возврат назад отвечает?
Цитата:
Сообщение от p51x Посмотреть сообщение
seekg
Пишу программы на С++. ТЗ, цену и сроки на p51x.fr {@} яндекс.ру
p51x вне форума Ответить с цитированием
Старый 13.11.2019, 00:15   #9
Tier_Mia
Пользователь
 
Регистрация: 13.10.2019
Сообщений: 14
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
И? Прочитайте, что вы задали - пока не конец потока.


А где вы еще будете? Или вы вводите в рандомное место?
Код:

		else if (amount == 2)
			
		    

		{
			int** m = new int* [n];
			for (int i = 0; i < n; i++)
				m[i] = new int[n];

			cout << "reading from the file " << endl;
			file.clear();
			file.seekg(0, ios_base::beg);
			while (!file.eof())
			{
			
				for (int i = 0; i < n; ++i)
					for (int j = 0; j < n; ++j) {
						file >> m[i][j];
						cout << m[i][j] << " ";
						
					}
			}
			
			}

		
		}
		file.close();
}
Не помогает... что я не так сделал?

Последний раз редактировалось Tier_Mia; 13.11.2019 в 00:22.
Tier_Mia вне форума Ответить с цитированием
Старый 07.12.2019, 13:30   #10
digitalis
Участник клуба
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 1,996
По умолчанию

.....

Последний раз редактировалось digitalis; 07.12.2019 в 14:56. Причина: поздно....
digitalis вне форума Ответить с цитированием
Ответ

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача со строками и работой с файлами Richardqdw Помощь студентам 5 09.12.2016 21:42
Помогите нестандартной работой! Виталий87 Фриланс 4 21.03.2016 16:43
Помогите с практической работой Георгий_1992 C++ Builder 3 13.10.2014 18:23
Проблема с работой с файлами на ассемблере ed_ward Помощь студентам 1 04.01.2010 19:29
Проблема с работой с файлами (Паскаль) ReaktiV Помощь студентам 27 09.11.2008 11:30