Форум: Форум C++Разное
Новые темы: 00
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум C++

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: как открыть все текст. файлы в папке?
 
 автор: reser   (16.04.2012 в 21:36)   письмо автору
 
 

Привет! Как сделать так чтобы программа сама открывала и сортировала текстовые файлы которые лежат в папке? Прога сортирует данные по алфавиту. Например в папке лежат 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 файла, прога сортирует их и соединяет их, потом результаты опять сортирует и уже на нулевом проце их сцепляет и итог сортирует.

  Ответить  
 
 автор: cheops   (17.04.2012 в 22:03)   письмо автору
 
   для: reser   (16.04.2012 в 21:36)
 

Понимаете какая штука, вы стандартную библиотеку не распараллелите, вернее вы можете подключить мультипотоковую версию библиотеки в надежде, что она где-то там внутри себя рапараллелит процесс. Если вы хотите сами контролировать параллельно выполняющиеся потоки, а не дай бог еще задействовать не центральный процессор, а видео-карту, вам нужно самостоятельно реализовать алгоритм сортировки, т.е. то, что скрыто под std:sort(). Тут вам нужно решить задачу, в какой кодировке ваши файлы (т.е. есть среди них русские символы, или только английские, если это русские символы, то какая кодировка, а потом написать алгоритм сортировки строк, выбрав подходящий вам - вариантов довольно много).

PS Вы на чем параллелить хотите, на центральном процессоре? А главное цель какая, учебная или промышленная?

  Ответить  
 
 автор: reser   (18.04.2012 в 08:36)   письмо автору
 
   для: cheops   (17.04.2012 в 22:03)
 

На процессоре. Цель учебная. Я бы в пром-ти с такими знаниями не работал бы XD

  Ответить  
 
 автор: cheops   (18.04.2012 в 13:45)   письмо автору
 
   для: reser   (18.04.2012 в 08:36)
 

Тогда лучше от STL отказаться (с ним хорошо работать, когда очень хорошо знаете C++, причем именно С++, а не чистый С) и решить задачу средствами C, реализовав какой-то из методов сортировки, пузырьковую или быструю (лучше быструю - её распараллель будет проще, да она и сама по себе быстрее). Причем не обязательно решать задачу сразу. можно просто взять готовый массив и реализовать для него сортировку, а потом отдельно решить задачу чтения имен файлов. А потом объединить два проекта в конечный. Т.е. разбивайте задачу на как можно более мелкие подпроекты и реализуйте их отдельно, причем, так, чтобы вы понимали каждую строку программы.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования