Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Suares
0 / 0 / 0
Регистрация: 28.02.2013
Сообщений: 106
#1

Чтение из двух файлов и запись в один - C++

12.07.2013, 23:05. Просмотров 626. Ответов 5
Метки нет (Все метки)

Помогите с одной задачей. У меня есть два файла:
1. "oldmast.dat" в котором 4 поля: номер счета клиента, фимилия, имя и баланс;
2. "trans.dat" где 2 поля: номер счета клиента и вносимая сумма;
И есть еще один пустой файл, который должен записать следующее, если номер счета совпадает в 1 файле и во 2 файла, то я должен их суммировать и записать в "newmast.dat"... Остальные случаи пока не рассматриваю.
У меня получается что программа берет только первую запись из "oldmast.dat" и сравнивает ее со всеми записями в "trans.dat", а на вторую строку не переходит в "oldmast.dat"

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
    std::ifstream old_report("oldmast.dat");
    std::ifstream transaction("trans.dat");
    std::ofstream new_report("newmast.dat", std::ios::app);
 
    if( old_report.fail( ) || transaction.fail( ) )
    {
        std::cerr << "This file cann't open by PC" << std::endl;
        exit(1);
    }
 
    clientData client;
    transData trans;
 
    while( old_report >> client.accountNum >> client.surname >> client.name >> client.balance )
    {
        while( transaction >> trans.accountNum >> trans.balance )
        {
            if(client.accountNum == trans.accountNum)
                new_report << client.accountNum << '\t' << client.surname << '\t' << client.name << '\t' <<    (client.balance + trans.balance) << std::endl; 
        }
    }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.07.2013, 23:05     Чтение из двух файлов и запись в один
Посмотрите здесь:

Чтение из двух файлов и запись в третий - C++
Имеется следующая задача: в цикле подсчитывается определенное значение функции fe, зависящее от одного параметра(вводится) и записывается в...

Чтение чисел из двух и более файлов и запись в векторы - C++
В общем моя задача такова: Есть 2 и более файла, каждый из которых наполнен столбцом чисел. Мне нужно прочесть числа из каждого файла и...

Чтение\запись файлов - C++
Помогите с такой проблемой: записываю в бинарный файл числа типа long double, после чтения из файла теряются данные - к примеру вместо 12...

Запись и чтение файлов - C++
Есть задача, имеются бинарные файл А и В, в А первые 10 чисел положительные, другие 10 отрицательные. Записать в В первые 5 положительных и...

чтение/запись файлов - C++
Здравствуйте, подскажите, пожалуйста, как решить проблему: Имеется массив типа BYTE, необходимо записать его КАК файл Microsoft Word,а...

Запись и чтение объектов разных классов в один файл - C++
Здравствуйте. Изучаю С++ по Лафоре. Дошёл до места, где объясняется, как записывать объекты разных классов в один бинарник. У Лафоре,...

Запись и чтение двоичных файлов - C++
Здравствуйте! Как производится запись в двоичные файлы? Нормальных гайдов я не нагуглил. Пробовал так, но не получается.fstream...

Быстрое чтение и запись файлов - C++
Вопрос такой: имеется файл input.txt следующего вида: 5 12 6 7 44 2 1 2 3 4 5 2 343 634 54 1 123 2 345 56 56 11111 2222...

Запись, чтение, удаление из файлов - C++
Добрый день! Решаю задачку: 1) Нужно записать в файл - моя программа записывает в .dat файл вводимую структуру. Но можно ли это...

Работа с COM портом запись и чтение в один заход-как сделать? - C++
Столкнулся с тем что оборудование которое прицеплено к компорту не отвечает если сразу же после отправки пакета затребовать у него...

Чтение двух файлов одновременно! - C++
Здравствуйте! Подскажите, пожалуйста, как открыть одновременно два файла для чтения. Из первого файла записать данные в массив А, из...

Чтение и запись файлов на удаленном компьютере - C++
Как послать с моего компютера на другой компютер файл, и ишьо как винять оттуда файл? Не примите за виросопистса, я в добрих намериниях.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
gray_fox
What a waste!
1411 / 1140 / 55
Регистрация: 21.04.2012
Сообщений: 2,362
Завершенные тесты: 3
12.07.2013, 23:21     Чтение из двух файлов и запись в один #2
Suares, Можно предварительно загрузить один из файлов в память (например "trans.dat" в std::map).
Suares
0 / 0 / 0
Регистрация: 28.02.2013
Сообщений: 106
13.07.2013, 07:57  [ТС]     Чтение из двух файлов и запись в один #3
А пример можно, пожалуйста, с std::map.
gray_fox
What a waste!
1411 / 1140 / 55
Регистрация: 21.04.2012
Сообщений: 2,362
Завершенные тесты: 3
13.07.2013, 13:34     Чтение из двух файлов и запись в один #4
Примерно так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
typedef std::map<std::string, double> transaction_map_t;
 
transaction_map_t transactionMap;
for (transData trans; transaction >> trans.accountNum >> trans.balance; ) {
   transactionMap.insert(std::make_pair(trans.accountNum, trans.balance));
}
 
// ...
 
while( old_report >> client.accountNum >> client.surname >> client.name >> client.balance ) {
   transaction_map_t::const_iterator pos const = transactionMap.find(client.accountNum);
   if (pos != transactionMap.end()) {
      new_report << client.accountNum << '\t' << client.surname << '\t' << client.name << '\t' <<    (client.balance + trans.balance) << std::endl; 
   }
}
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
13.07.2013, 13:55     Чтение из двух файлов и запись в один #5
Цитата Сообщение от Suares Посмотреть сообщение
У меня получается что программа берет только первую запись из "oldmast.dat" и сравнивает ее со всеми записями в "trans.dat", а на вторую строку не переходит в "oldmast.dat"
Должна переходить. Вот во второй файл не зайдёт пока флаги не сбросите и курсор в начало не поставите:
C++
1
2
3
4
5
6
7
8
9
10
while( old_report >> client.accountNum >> client.surname >> client.name >> client.balance )
{
     while( transaction >> trans.accountNum >> trans.balance )
     {
         if(client.accountNum == trans.accountNum)
             new_report << client.accountNum << '\t' << client.surname << '\t' << client.name << '\t' <<    (client.balance + trans.balance) << std::endl; 
     }
     transaction.clear();
     transaction.seekg(0, ios::beg);
}
gray_fox
What a waste!
1411 / 1140 / 55
Регистрация: 21.04.2012
Сообщений: 2,362
Завершенные тесты: 3
13.07.2013, 14:02     Чтение из двух файлов и запись в один #6
Цитата Сообщение от gray_fox Посмотреть сообщение
Примерно так:
Там только вывод так:
C++
1
new_report << client.accountNum << '\t' << client.surname << '\t' << client.name << '\t' <<    (client.balance + it->second) << std::endl;
Добавлено через 1 минуту
Вообще лучше бы unordered_map подошло, если есть.
Yandex
Объявления
13.07.2013, 14:02     Чтение из двух файлов и запись в один
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru