С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.91/64: Рейтинг темы: голосов - 64, средняя оценка - 4.91
11 / 11 / 2
Регистрация: 16.08.2009
Сообщений: 434

Как записать динамический массив в файл

29.05.2011, 08:46. Показов 12910. Ответов 25
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
есть такой массив

C++
1
2
3
4
5
    double *****massiv_resultatov = new double****[25];
    for(i = 0; i < 25; i++) massiv_resultatov[i] = new double***[15];
    for(i = 0; i < 25; i++) for(j = 0; j < 15; j++) massiv_resultatov[i][j] = new double**[15];
    for(i = 0; i < 25; i++) for(j = 0; j < 15; j++) for(k = 0; k < 15; k++) massiv_resultatov[i][j][k] = new double*[170];
    for(i = 0; i < 25; i++) for(j = 0; j < 15; j++) for(k = 0; k < 15; k++) for(g = 0; g < 170; g++)massiv_resultatov[i][j][k][g] = new double[3];
пробую его записать так

C++
1
2
3
FILE * fout = fopen("massiv_resultatov.dat", "wb");
fwrite(massiv_resultatov, sizeof(massiv_resultatov), 1, fout);  // big write, but quick
fclose(fout);
Но ничего не пишеться
Все компилируеться и выполняеться без ошибок, а в результате получаю файл на 1Кб, хотя очевидно что он должен быть намного больше

покажите плз пример кода как записать мой массив в дат файл ?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
29.05.2011, 08:46
Ответы с готовыми решениями:

Как сделать из статического массива, одномерный динамический массив и двумерный динамический массив
По условию: &quot;Дана прямоугольная матрица размера A × B. Найти строки с наибольшей и наименьшей...

Заполнить динамический массив из файла и записать массив обратно в файл
Подскажите пожалуйста функцию которая будет заполнять Динамический массив из файла и обратную...

Динамический массив ,элементами которого являются объекты класса динамический массив
Доброго времени суток, захотел создать динамический массив ,элементами которого являются объекты...

25
 Аватар для Mиxaил
542 / 447 / 162
Регистрация: 10.12.2009
Сообщений: 1,857
29.05.2011, 11:01
C++
1
2
3
4
std::ofstream File_output ( "output.txt", std::ofstream::out);
for ( int index = 0; index < 25; index++ )
    File_output << mas [ index ];
File_output.close();
0
11 / 11 / 2
Регистрация: 16.08.2009
Сообщений: 434
29.05.2011, 11:34  [ТС]
C++
1
2
3
4
std::ofstream File_output ( "massiv_def_vesov.dat", std::ofstream::out);
for ( int index = 0; index < 25; index++ )
File_output << massiv_resultatov[ index ];
File_output.close();
сделал так результат такой же как и у меня пишеться файл размером 1кб
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
29.05.2011, 12:02
nill, у вас в файл пишутся значения указателей на первые элементы массивов следующего уровня, вот их примерно килобайт и набирается. Вообще интересно, что это за задача, которая аж пятимерных массивов требует? Наверняка что-то перемудрили...
0
11 / 11 / 2
Регистрация: 16.08.2009
Сообщений: 434
29.05.2011, 12:19  [ТС]
easybudda,
так а как всетаки записать тогда ?
я уже смотрю что пишеться всегда одно и тоже как раз похоже на что то типо указателей

с пятимерным массивом не перемудрил может быть только количество элементов в первых трех уровнях можно сократить а все остальное нет

Добавлено через 8 минут
И еще такой вопрос вот этот массив у меня в консольном приложении Win32
если перемножить все пять уровней получается 2868750 то есть всего 2М элементов

а другой проге которая у меня в виде длл есть трехмерный массив на 63М элементов и все ок и с записью и с инициализацией просто написал int super_mas[795][796][101]={0}; и все ок
почему так ?
в консольных приложениях меньше памяти можно использовать или что ?
0
 Аватар для Kastaneda
5232 / 3205 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
29.05.2011, 12:24
Цитата Сообщение от nill Посмотреть сообщение
так а как всетаки записать тогда ?
Можно через циклы
C++
1
2
3
4
5
6
for(int a=0;a<size;a++)
   for(int b=0;b<size;b++)
      for(int c=0;c<size;c++)
         for(int d=0;d<size;d++)
            for(int e=0;e<size;e++)
              File_output << massiv_resultatov[a][b][c][d][e];
1
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
29.05.2011, 12:24
Цитата Сообщение от nill Посмотреть сообщение
если перемножить все пять уровней получается 2868750 то есть всего 2М элементов
уверены? вы запустите диспетчер задач и посмотрите сколько ест памяти, ваш 5-ти мерный массив лочит около 80 мегов памяти и после этого полторы минуты освобождает эту память
0
11 / 11 / 2
Регистрация: 16.08.2009
Сообщений: 434
29.05.2011, 13:43  [ТС]
Kastaneda,
спасибо вроде записалось но я думал будет 75 мег как он и ест в оперативе а файл получился 36 мег всего

только опять проблема а как прочитать этот файл в массив
раньше был такой код для обыяного массива

C++
1
2
3
4
memset(massiv_resultatov, 0, sizeof(massiv_resultatov));
FILE * fin10 = fopen("massiv_def_vesov.dat", "rb");
size_t bytesread10 = fread(massiv_resultatov, sizeof(massiv_resultatov), 1, fin10); 
fclose(fin10);
но для динамического он не подходит

Maxwe11,
все правильно 75 мег он есть, а тот большой на 63М около 200 мег есть и инициализируеться как обычный массив без всяких заморочек
0
 Аватар для Kastaneda
5232 / 3205 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
29.05.2011, 14:12
Цитата Сообщение от nill Посмотреть сообщение
только опять проблема а как прочитать этот файл в массив
Ну можно записывать в файл через пробелы
C++
1
File_output << massiv_resultatov[a][b][c][d][e]<<" ";
А потом считывать так же, через циклы.
1
11 / 11 / 2
Регистрация: 16.08.2009
Сообщений: 434
29.05.2011, 14:16  [ТС]
Kastaneda,
можно пример в коде как считать из файла?
немогу разобраться как и что делать в циклах
0
 Аватар для Kastaneda
5232 / 3205 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
29.05.2011, 14:17
Так аналогично же:
C++
1
2
3
4
5
6
for(int a=0;a<size;a++)
   for(int b=0;b<size;b++)
      for(int c=0;c<size;c++)
         for(int d=0;d<size;d++)
            for(int e=0;e<size;e++)
              File_input >>massiv_resultatov[a][b][c][d][e];
1
11 / 11 / 2
Регистрация: 16.08.2009
Сообщений: 434
29.05.2011, 15:06  [ТС]
Kastaneda,

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
std::ofstream File_output ( "massiv_def_vesov.dat", std::ofstream::out);
for(int a=0;a<25;a++)
for(int b=0;b<15;b++)
for(int c=0;c<15;c++)
for(int d=0;d<170;d++)
for(int e=0;e<3;e++)
File_output << massiv_resultatov[a][b][c][d][e];
File_output.close();
 
std::ofstream File_input ( "massiv_def_vesov.dat", std::ofstream::in);
for(int a=0;a<25;a++)
for(int b=0;b<15;b++)
for(int c=0;c<15;c++)
for(int d=0;d<170;d++)
for(int e=0;e<3;e++)
File_input << massiv_resultatov[a][b][c][d][e]; 
File_input.close();
вот такой код для записи и чтения
в итоге ничего не читает как будто дат файл пустой
что не так где ошибка?
0
Higher
 Аватар для diagon
1953 / 1219 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
29.05.2011, 15:10
C++
1
std::ofstream
Возможно, из-за этого?
0
11 / 11 / 2
Регистрация: 16.08.2009
Сообщений: 434
29.05.2011, 15:15  [ТС]
diagon,
а что надо написать?
0
Higher
 Аватар для diagon
1953 / 1219 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
29.05.2011, 15:18
По логике так
C++
1
2
3
std::ifstream File_input("massiv_def_vesov.dat");
 
std::ofstream File_output("massiv_def_vesov.dat");
Правда в вашем коде оба случая для записи, а не для чтения, как-то не заметил
0
11 / 11 / 2
Регистрация: 16.08.2009
Сообщений: 434
29.05.2011, 15:21  [ТС]
diagon,

C++
1
2
3
4
5
6
7
8
std::ifstream  File_input ( "massiv_def_vesov.dat", std::ifstream::in);
for(int a=0;a<25;a++)
for(int b=0;b<15;b++)
for(int c=0;c<15;c++)
for(int d=0;d<170;d++)
for(int e=0;e<3;e++)
File_input << massiv_resultatov[a][b][c][d][e]; 
File_input.close()
такой код вообще не компилиться

можно пример всего кода с циклом а то я так долго буду гадать
0
Higher
 Аватар для diagon
1953 / 1219 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
29.05.2011, 15:23
Хм... зачем там писать
C++
1
 std::ifstream::in
Если я не ошибаюсь, ввод-вывод будут такими
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
std::ifstream File_input( "massiv_def_vesov.dat");
for(int a=0;a<25;a++)
for(int b=0;b<15;b++)
for(int c=0;c<15;c++)
for(int d=0;d<170;d++)
for(int e=0;e<3;e++)
File_input >> massiv_resultatov[a][b][c][d][e]; 
File_input.close();
 
std::ofstream File_output( "massiv_def_vesov.dat");
for(int a=0;a<25;a++)
for(int b=0;b<15;b++)
for(int c=0;c<15;c++)
for(int d=0;d<170;d++)
for(int e=0;e<3;e++)
File_output << massiv_resultatov[a][b][c][d][e];
File_output.close();
0
11 / 11 / 2
Регистрация: 16.08.2009
Сообщений: 434
29.05.2011, 15:34  [ТС]
diagon,
код компилиться но результат тот же массив пустой
с файла ничего не читаеться

то есть файл создаеться потом я делаю только чтение в коде без записи и печатаю массив он пустой
0
Higher
 Аватар для diagon
1953 / 1219 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
29.05.2011, 15:38
Для начала неплохо было бы создать и заполнить этот файл=)
Потом считать с него в массив, выполнить нужные преобразования, открыть файл для записи, и вывести туда массив... Вам ведь это нужно?
0
11 / 11 / 2
Регистрация: 16.08.2009
Сообщений: 434
29.05.2011, 15:59  [ТС]
ну так вот же мы создаем и записываем все в файл разве нет?
C++
1
2
3
4
5
6
7
8
std::ifstream File_input( "massiv_def_vesov.dat");
for(int a=0;a<25;a++)
for(int b=0;b<15;b++)
for(int c=0;c<15;c++)
for(int d=0;d<170;d++)
for(int e=0;e<3;e++)
File_input >> massiv_resultatov[a][b][c][d][e]; 
File_input.close();
Потом считать с него в массив, выполнить нужные преобразования, открыть файл для записи, и вывести туда массив... Вам ведь это нужно?
мне это нужно чтобы в одной проге создать массив записать туда данные и сохранить весь массив в дат файле, а в другой проге открыть этот дат файл и считать все в такой же массив
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
29.05.2011, 15:59
Помогаю со студенческими работами здесь

Динамический массив при наследовании, элементами которого являются объекты класса наследника динамический массив
Попробовал создать динамический массив, у которого элементы - объекты класса динамический массив,...

Как записать и прочитать в бинарный файл двумерный динамический массив объектов?
Есть двухмерный динамический массив объектов. Я хочу записать его в бинарник, а потом считать...

Записать исходный и отсортированный динамический массив в файл
Есть динамический массив: #include &lt;iostream&gt; #include &lt;Windows.h&gt; #include &lt;math.h&gt; #include...

Создать динамический класс Book, содержащий динамический массив Authors
Мне нужно написать программу,а я не знаю как ее написать. Знаю, тут люди за кого-то не делают,...

Создать динамический класс Book, содержащей динамический массив Authors
всем привет. может кто-то набросать код для такой вот задачи: Создать динамический класс Book,...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru