не могу разобраться с файловым вводом-выводом(C++)

Регистрация на сайте
GRATIS форум > Архивы > ** Компьютер
lola2
Проблема вот в чем: надо несколько (пусть будет 2) разных файлов перемешать и записать в один. в файле-результате должны встречаться все строки из исходных файлов в случайном порядке.
Как это сделать на С или С++?

Заранее благодарна за помощь
Salagin
Я не сильно Сионист :-))) но напишу решение, а его можно написать на любом языке...
1. Читаешь оба файла
2. Генеришь случайные числа, к примеру если число < ну там 0.5, то пишешь в новый файл строчку из 1 файла, если нет - то из второго.
Либо запихиваешь содержимое файлов в хэш, а потом случайным образом выдергиваешь в новый файл.
Идея вроде такая...
lola2
За идею спасибо.
Про хэш по-моему лучше.
Попробую...
А вот насчет
QUOTE
но напишу решение, а его можно написать на любом языке...

конечно верно, только дело в деталях. smile.gif)
lola2
#include <fstream>
#include <vector>
#include <string>
#include <algorithm>
int main(){
const int MAX_BUF = 1024;
ifstream f1("1.txt"), f2("2.txt");
ofstream f3("3.txt");
if (!f1 || !f2 || !f3) {
cerr << " ошибка при открытии файла\n";
return -1; }
std::vector<std::string> line;
char buffer[MAX_BUF];
line.reserve(MAX_BUF);
while (!f1.eof()) {
f1.getline(buffer, MAX_BUF);
line.push_back(buffer);
}
while (!f2.eof()) {
f2.getline(buffer, MAX_BUF);
line.push_back(buffer);
}
std::random_shuffle(line.begin(), line.end());
for (int i = 0; i < line.size(); i++) {
f3.write(line[i].c_str(), line[i].size());
f3.put('\n'); } f1.close(); f2.close();
f3.close();
return 0;
}


Если так сделать.
все работает, но может можно проще?
Вобщем нужна конструктивная критика.