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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.69
Vorox
25 / 24 / 3
Регистрация: 26.11.2010
Сообщений: 57
Завершенные тесты: 1
#1

n-мерный массив - C++

30.01.2011, 21:29. Просмотров 1640. Ответов 4
Метки нет (Все метки)

Вопрос заключается в следующем:
Как задать n-мерный массив в описании класса, если на начальной стадии неизвестна его размерность?
Или по другому, необходимо чтобы при переполнении n-мерного массива(выход за рамки дозволенного диапазона например типа long int) добавлялась n+1 размерность, как то так.
Ваши идейные соображения?
П.С. желательно без использования класса vector
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.01.2011, 21:29
Здравствуйте! Я подобрал для вас темы с ответами на вопрос n-мерный массив (C++):

1 мерный массив - C++
В одномерном массиве, состоящем из n целых элементов, вычислить: 1) произведение элементов массива с четными номерами; 2) сумму...

2-х мерный массив. - C++
Дана целочисленная прямоугольная матрица. Определить: 1) количество столбцов, содержащих хотя бы один нулевой элемент; 2) номера строк,...

5-ти мерный массив - C++
написал функцию Проблема в том, что содержимое массива создается локально, а мне надо глобально То есть в строке 64 выводит все...

m - мерный массив - C++
Дано n точек m мерного пространства, каждая точка имеет массу. Найти координаты точки наиболее удаленной от точки центра масс. Помогите...

Двух мерный массив. - C++
Дана прямоугольная матрица. Найти строку с наибольшей и меньшей суммой элементов вывести на экран найденные строки и суммы их элементов.

динамический 2-х мерный массив - C++
помогите плиз вот код , нужно составить динамический 2-х мерный массив double **a int n,m,l; scanf("%d%d",&n,&m); a=(double **)...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
lemegeton
2924 / 1353 / 135
Регистрация: 29.11.2010
Сообщений: 2,725
30.01.2011, 21:39 #2
Приведите, пожалуйста, синтаксический пример, как вы хотите N-мерный массив использовать?

В качестве идеи раз, абстрактную область памяти можно представлять в виде N-мерного массива, но нужно знать все размерности.

В качестве идеи два, можно делать массив указателей. Если нужно добавить "размерность" одному или нескольким элементам, можно этому указателю выделить память под массив указателей, ну и в том же духе. В таком случае, нужно как-то определять, когда элемент массива указывает на массив, а когда на данные.
0
Vorox
25 / 24 / 3
Регистрация: 26.11.2010
Сообщений: 57
Завершенные тесты: 1
30.01.2011, 22:05  [ТС] #3
Цитата Сообщение от lemegeton Посмотреть сообщение
Приведите, пожалуйста, синтаксический пример, как вы хотите N-мерный массив использовать?

В качестве идеи раз, абстрактную область памяти можно представлять в виде N-мерного массива, но нужно знать все размерности.

В качестве идеи два, можно делать массив указателей. Если нужно добавить "размерность" одному или нескольким элементам, можно этому указателю выделить память под массив указателей, ну и в том же духе. В таком случае, нужно как-то определять, когда элемент массива указывает на массив, а когда на данные.
1 - ая идея не подходит т.к. суть как раз в том что мы не знаем кол-во размерностей.
Насчет 2 - ой опять же при создании массива указателей мы имеем четкую границу размера этого массива.
Насчет примера:
Есть файл с данными (числовыми) записанными по определенной схеме( файл не маленький ~ от 100 мб и выше) вот эти данные и надо записать в массив для последующего анализа. Причем в конец данного файла постоянно добавляются новые числа, поэтому зафиксировать его размер не получится.

П.С. Количество элементов массива - фиксированная величина. При выходе за пределы этой величины нужно увеличить размерность на 1. Вот только как реализовать это действие с помощью функции класса. Можно было бы создавать новый n+1 массив и переписывать все данные из предыдущего в новый, но тут остро возникнет вопрос по производительности...
0
lemegeton
2924 / 1353 / 135
Регистрация: 29.11.2010
Сообщений: 2,725
30.01.2011, 22:16 #4
Приведите КОД-пример использования N-мерного массива.

Хрустальный шар тут подсказывает, что вы, возможно, имеете в виду не размерность массива, а просто размер массива. Тогда зависит от размера единиц информации. При больших единицах информации (строки, структуры) в файле имеет смысл воспользоваться одно или двусвязными списками, если хотите выиграть такты. При небольших объемах информации (стандартные типы, небольшие структуры в несколько байт) лучше, наверно, копировать -- избыточность на хранение указателей будет существенной.
0
Vorox
25 / 24 / 3
Регистрация: 26.11.2010
Сообщений: 57
Завершенные тесты: 1
30.01.2011, 22:24  [ТС] #5
Цитата Сообщение от lemegeton Посмотреть сообщение
Приведите КОД-пример использования N-мерного массива.

Хрустальный шар тут подсказывает, что вы, возможно, имеете в виду не размерность массива, а просто размер массива. Тогда зависит от размера единиц информации. При больших единицах информации (строки, структуры) в файле имеет смысл воспользоваться одно или двусвязными списками, если хотите выиграть такты. При небольших объемах информации (стандартные типы, небольшие структуры в несколько байт) лучше, наверно, копировать -- избыточность на хранение указателей будет существенной.
Примера кода нет.
По простому есть a[n] n- маскимальный размер типа int(char) (пока не решил что лучше использовать). Надо переделать его в a[n][n][n]...[n].
П.С. данная задача не имеет ни какого отношения к лабам, курсовикам и т.п.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.01.2011, 22:24
Привет! Вот еще темы с ответами:

N-мерный массив в векторе - C++
Здравствуйте. Можно ли в векторе хранить n-мерный массив. т.е. я с клавиатуры ввожу размерность n массива и потом заполняю сам массив.

Пяти мерный динамический массив - C++
Ребят помогите сделать пяти мерный динамический массив, я просто не в курсе как это делать.

про функции и 2х мерный массив - C++
привет) вот тут кое что немагу понять:rtfm: пример int mass ; for (int i =0; i<2; i++) for (int j = 0; j< 0;...

3-х мерный массив+Строки+функции - C++
Задача: Обработать n1 матриц размером n*m. Элемент строка. В каждой из матриц есть одно слово состоящее только из цифр. Найти его,...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
30.01.2011, 22:24
Ответ Создать тему
Опции темы

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