2016-02-05 2 views
-2

Я очень смущен новым заданием программирования, которое мы получили в классе несколько дней назад. Он просит нас прочитать информацию из файла, который содержит неизвестное количество строк и столбцов, а затем сортировать данные. Мой вопрос: как мне это сделать?Как хранить таблицу с различным количеством столбцов и строк? C++

Мое рассуждение состояло в том, что, если бы я знал количество столбцов, я бы просто создал массив структур, а затем создавал новую структуру для каждой строки. Но так как количество столбцов также неизвестно, я не знаю, как подойти к этому.

Также мы разрешили использовать только <iostream><fstream>, <cctype> и <vector> библиотеки.

+1

Что вы пробовали? отправьте примерный код того, что у вас есть. Также исправьте предложение «Также нам разрешено использовать и библиотеки», так как неясно, что вы пытаетесь сказать или каково ограничение на самом деле. – Dave

+0

Если вы хотите «сортировать данные», какой вид вы планируете ... номера каждой строки, но тогда как сортировать строки? Может быть, все числа во всех строках попадают в один вектор - простой вид, но растущий? уменьшается? И идея колонки состоит в том, чтобы просто запутать вас (и нас)? Возможно, он просит вас определить вашу интерпретацию проблемы (тогда сделайте это) или попросить вас связаться с ним (или его TA) для получения информации, необходимой для выполнения задания. –

+0

Прошу прощения. Я попытался перечислить библиотеки между символами меньше и больше, но, видимо, они не разрешены. Я пытался сказать, что мы можем использовать только iostream, fstream, vector и cctype. Что касается сортировки, мне просто нужно сортировать ее в порядке возрастания/уменьшения. Данные в таблице будут иметь тип int, double и string. – alexspace38

ответ

0

Вы можете использовать

std::vector<std::vector<WhateverTypeYouWantToStore>> 
0

Используйте зЬй :: вектор. Вы можете создать 2D вектор, как это:

vector<vector<string> > table; 

А потом читать строки из файла и поместить данные в одномерный вектор (vector<string> line). И затем, Вы можете push_back вектор строки в таблицу, как это:

table.push_back(line); 

Вы можете увидеть больше информации о векторе на этой странице: cplusplus.com

0

Я надеюсь, что вы должны знать, какой формат данных, которые вам будут считываться из строки и столбца текстового файла. Сначала, чтобы понять, вы будете читать первую строку, затем вторую строку и так далее. Если вы не знаете тип данных, тогда верьте всему этому как строку символов. Таким образом, вы можете предположить, где бы вы ни выбрали null char '\ 0', тогда вы находите данные для первой строки, поэтому продолжайте читать символ по символу, ищите следующий «\ 0». Тогда везде, где вы найдете «\ n», это будет последняя точка первой строки, и вы просто обнаружили последний столбец. После «\ n» вы начнете читать 2-й ряд и так далее. С этим вы можете определить, сколько строк и столбцов есть. Вы продолжаете читать текстовый файл, пока не достигнете EOF. См. Прикрепленное изображение. Text File Format Также укажите указатель на тип символа и используйте realloc для назначения ему памяти. С помощью realloc() вы можете его вырастить, когда найдете больше данных. Прочтите руководство по realloc() для справки.