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

Чтения файла в динамический массив - C++

Восстановить пароль Регистрация
 
KaRTMaN
2 / 2 / 1
Регистрация: 23.03.2009
Сообщений: 55
11.09.2012, 12:52     Чтения файла в динамический массив #1
Добрый день.
Файл состоит из 6 столбцов и миллионов рядков. Нужно прочесть все это в динамический массив, проблема заключается в том что файл весит очень много(больше 3 гб). Как можно осуществить подобное?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.09.2012, 12:52     Чтения файла в динамический массив
Посмотрите здесь:

C++ считывание файла в динамический массив построчно
Записать информацию из файла в динамический массив C++
Динамический массив структур - ошибка "попытка чтения или записи в защищенную память" C++
C++ Каким образом после чтения из файла, узнать позицию для чтения следующего куска байт
Чтение из файла в динамический массив C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Кот Ангенс
 Аватар для Кот Ангенс
317 / 267 / 37
Регистрация: 24.05.2012
Сообщений: 629
11.09.2012, 13:12     Чтения файла в динамический массив #2
Напишите все задание. Возможно, есть другой способ.
Если это и есть все, то это делается довольно легко. Просто памяти может не хватить.
Catstail
Модератор
 Аватар для Catstail
21501 / 10254 / 1670
Регистрация: 12.02.2012
Сообщений: 17,139
11.09.2012, 13:28     Чтения файла в динамический массив #3
Нужно организовать список массивов. Когда очередной заполняется - создавать следующий и т.д. до полной загрузки файла.
KaRTMaN
2 / 2 / 1
Регистрация: 23.03.2009
Сообщений: 55
11.09.2012, 13:37  [ТС]     Чтения файла в динамический массив #4
Цитата Сообщение от Кот Ангенс Посмотреть сообщение
Напишите все задание. Возможно, есть другой способ.
Если это и есть все, то это делается довольно легко. Просто памяти может не хватить.
Тип файла такой:
1 1 0.70000 3.21321 4.421322 2.23422
1 2 0.70001 3.21329 4.657899 3.00001
1 3 0.70022 3.43255 5.326732 1.23123
1 4 0.70000 3.90999 6.111112 4.33321
2 1 0.70022 3.43255 5.326732 1.23123
2 2 0.78111 4.22222 6.123455 4.12345
и тд.
Нужно найти среднее по столбцам 3,4,5,6 в рядах от 1 до 4 и записать это всё в новый файл. Затем посчитать среднее в столбцах 3,4,5,6 для рядов от 5 по 6...
Catstail
Модератор
 Аватар для Catstail
21501 / 10254 / 1670
Регистрация: 12.02.2012
Сообщений: 17,139
11.09.2012, 13:39     Чтения файла в динамический массив #5
А зачем для этого огромные массивы? Читай строку за строкой, веди счетчик строк и копи 4 суммы. Когда файл кончится, раздели каждую сумму на число строк - получишь 4 средних по столбцам.
KaRTMaN
2 / 2 / 1
Регистрация: 23.03.2009
Сообщений: 55
11.09.2012, 13:44  [ТС]     Чтения файла в динамический массив #6
Правда можно и так) Если бы вы еще помогли с кусочком кода, был бы благодарен. Я так понимаю нужно 2 цикла, один читает файл другой подсчитывается нужные мне значения?
Герц
523 / 340 / 4
Регистрация: 05.11.2010
Сообщений: 1,077
Записей в блоге: 1
11.09.2012, 14:13     Чтения файла в динамический массив #7
Два цикла тут совсем ни к чему, читаешь файл и тут же вычисляешь все что тебе нужно, записывая это во второй файл.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.09.2012, 14:38     Чтения файла в динамический массив
Еще ссылки по теме:

Двумерный динамический массив. Попытка чтения или записи в защищенную память C++
Ввод данных в динамический массив из файла C++
Чтение из файла в динамический массив C++

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

Или воспользуйтесь поиском по форуму:
Andsteadur
152 / 136 / 3
Регистрация: 23.05.2009
Сообщений: 275
11.09.2012, 14:38     Чтения файла в динамический массив #8
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#include <iostream>
#include <fstream>
 
using std::cout;
using std::endl;
 
int main()
{
    std::ifstream fin("data.txt", std::ios::in);
 
    if (fin.fail())
    {
        cout<<"Unable to open file!\n";
        return 0;
    }
    double res3 = 0;
    double res4 = 0;
    double res5 = 0;
    double res6 = 0;
    int rowCount = 0;
    while(!fin.eof())
    {
        int iBuf = 0;
        double dBuf = 0;
        fin>>iBuf>>iBuf;
        fin>>dBuf;
        res3 += dBuf;
        fin>>dBuf;
        res4 += dBuf;
        fin>>dBuf;
        res5 += dBuf;
        fin>>dBuf;
        res6 += dBuf;
        ++rowCount;
    }
    fin.close();
    cout<<"Total rows read: "<<rowCount<<endl;
    cout<<"Average value (column 3): "<<res3 / rowCount<<endl;
    cout<<"Average value (column 4): "<<res4 / rowCount<<endl;
    cout<<"Average value (column 5): "<<res5 / rowCount<<endl;
    cout<<"Average value (column 6): "<<res6 / rowCount<<endl;
 
    return 0;
}
Yandex
Объявления
11.09.2012, 14:38     Чтения файла в динамический массив
Ответ Создать тему
Опции темы

Текущее время: 12:28. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru