|
|
|
| Привет! Как сделать так чтобы программа сама открывала и сортировала текстовые файлы которые лежат в папке? Прога сортирует данные по алфавиту. Например в папке лежат 4 файла или 7....
Вот код:
#include <algorithm>
#include <iostream>
#include <fstream>
#include <iterator>
#include <vector>
#include <string>
int main()
{
std::string s;
std::vector<std::string> lines;
// читаем файл в контейнер построчно
std::ifstream in_file("laba3.txt", std::ios::in);
while(getline(in_file, s))
lines.push_back(s);
in_file.close();
std::sort(lines.begin(), lines.end()); // сортируем контейнер
// и записываем отсортированный контейнер в новый файл
std::vector<std::string>::iterator i = lines.begin();
std::ofstream out_file("laba311111.txt", std::ios::out);
for(; i != lines.end(); ++i)
out_file << *i << std::endl;
out_file.close();
return 0;
}
Просто мне еще надо распаралелить ее. То есть например 2 процессора 4 файла на каждый по 2 файла, прога сортирует их и соединяет их, потом результаты опять сортирует и уже на нулевом проце их сцепляет и итог сортирует. | |
|
|
|
|
|
|
|
для: reser
(16.04.2012 в 21:36)
| | Понимаете какая штука, вы стандартную библиотеку не распараллелите, вернее вы можете подключить мультипотоковую версию библиотеки в надежде, что она где-то там внутри себя рапараллелит процесс. Если вы хотите сами контролировать параллельно выполняющиеся потоки, а не дай бог еще задействовать не центральный процессор, а видео-карту, вам нужно самостоятельно реализовать алгоритм сортировки, т.е. то, что скрыто под std:sort(). Тут вам нужно решить задачу, в какой кодировке ваши файлы (т.е. есть среди них русские символы, или только английские, если это русские символы, то какая кодировка, а потом написать алгоритм сортировки строк, выбрав подходящий вам - вариантов довольно много).
PS Вы на чем параллелить хотите, на центральном процессоре? А главное цель какая, учебная или промышленная? | |
|
|
|
|
|
|
|
для: cheops
(17.04.2012 в 22:03)
| | На процессоре. Цель учебная. Я бы в пром-ти с такими знаниями не работал бы XD | |
|
|
|
|
|
|
|
для: reser
(18.04.2012 в 08:36)
| | Тогда лучше от STL отказаться (с ним хорошо работать, когда очень хорошо знаете C++, причем именно С++, а не чистый С) и решить задачу средствами C, реализовав какой-то из методов сортировки, пузырьковую или быструю (лучше быструю - её распараллель будет проще, да она и сама по себе быстрее). Причем не обязательно решать задачу сразу. можно просто взять готовый массив и реализовать для него сортировку, а потом отдельно решить задачу чтения имен файлов. А потом объединить два проекта в конечный. Т.е. разбивайте задачу на как можно более мелкие подпроекты и реализуйте их отдельно, причем, так, чтобы вы понимали каждую строку программы. | |
|
|
|