LINUX.ORG.RU

c++, матрица, запись в файл


0

0

Доброго времени суток. Нужен совет,напутствие или что-то в этом роде.
Задача такая: создать программку которая неким образом обрабатывает матрицу -> получается другая матрица. Полученную матрицу нужно записать в файл. Потом извлечь из файла для последующей обработки.
Я сделал две функции:
void out_in_file(){
enter_file_name();
ofstream outF(file_name,ios::out);
if (!outF){
cout << "ERROR" << endl;
exit(1);
}
outF << n << " ";
outF << m << " ";
for (int i=0;i<n;i++){
for (int j=0;j<m;j++){
outF << twoM[i][j] << " ";}
outF << endl;
}
outF.close();
}

void open_file(){
enter_file_name();
ifstream inF(file_name, ios::in);
if (!inF){
cout << "ERROR" << endl;
exit(1);
}
inF >> n;
inF >> m;
for (int i=0; i<n;i++)
for(int j=0; j<m;j++)
inF >> twoM[i][j];
inF.close();
}

А вопрос вот в чём: насколько рационально записывать размерность в файл. правильно ли это,не знаю с какой точки зрения(это лаба -> препод проверяет). есть ли какие-нибудь другие алгоритмы?

Спасибо за внимание.

Ответ на: комментарий от placement_new

вообщем-то так и делается. вопрос в том можно ли определить размер матрицы при чтении из файла, не записывая её размерность в этот файл. p.s догадываюсь что можно используя getline,считать кол-во строк. - 1 цикл; потом посчитать все элементы - уже два цикла, потом делить общее количество элементов на кол-во строк -> кол-во элементов в одной строке. потом уже только третьим и четвёртым циклом (зная MxN) считывать матрицу из файла. Это рационально?

deepforg
() автор топика
Ответ на: комментарий от deepforg

альтернатива - придумать разделитель строк и символ конца и каждый прочитаный символ с ним сравнимать. ну или пока в 1й раз не наткнёшься - тогда число столбцов уже будешь знать. короче я бы на твоём месте больше парился с тем, что каждый раз вводить имя файла геморно и лучше бы его аргументом в функцию передавать =)))

сугубо лчное ИМХО

teferiincub
()
Ответ на: комментарий от deepforg

Рационально так, как тебе проще. Зачем лишний геморрой?

theos ★★★
()

С++ники такие с++ники

Но, в принципе, да, для чего-то большего, чем матрицы обрабатывать, С++ не годен

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.