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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.85
beta-particle
4 / 4 / 0
Регистрация: 07.01.2013
Сообщений: 103
#1

Как реализовать двумерный динамический массив? - C++

18.06.2013, 01:02. Просмотров 1642. Ответов 30
Метки нет (Все метки)

Доброго дня суток, форумчане! Подскажите пожалуйста, как реализовать двумерный динамический массив?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.06.2013, 01:02
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как реализовать двумерный динамический массив? (C++):

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

Как создать динамический двумерный массив - C++
Динамический одномерный массив p можно сождать примерно так: int N, *p; cin >> N; p= new int А как создать динамический...

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

Как заполнить двумерный динамический массив? - C++
Кто может объяснить , как создать динамический двумерный массив и записать в него элементы из файла, при этом подсчитав количество строк и...

Как создать динамический двумерный массив - C++
Можно ли создать на С++ динамический двухмерный масив? Как? int z , x ; cin >> z ; cin >> x ; int *arr = new int(z); int *arr1...

Как создать двумерный динамический массив - C++
Помогите, пожалуйста, в таком вопросе: нужно создать динамический двумерный массив. Да он еще должен быть такой, чтоб длина строк была...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
newyork7776
348 / 341 / 80
Регистрация: 21.05.2013
Сообщений: 1,308
Завершенные тесты: 1
18.06.2013, 01:09 #2
C++
1
2
3
int** Mas = new int *[n];
    for (int i = 0; i < n; i++)
        Mas[i] = new int [m];
beta-particle
4 / 4 / 0
Регистрация: 07.01.2013
Сообщений: 103
18.06.2013, 01:10  [ТС] #3
newyork7776, я так понял, вы в массиве храните указатели на массив, так?
ValeryS
Модератор
6556 / 5022 / 464
Регистрация: 14.02.2011
Сообщений: 16,763
18.06.2013, 01:14 #4
Цитата Сообщение от beta-particle Посмотреть сообщение
newyork7776, я так понял, вы в массиве храните указатели на массив, так?
да
поскольку двумерных (многомерных) массивов в С нет, как например в Фортране
это получается массив массивов
beta-particle
4 / 4 / 0
Регистрация: 07.01.2013
Сообщений: 103
18.06.2013, 01:17  [ТС] #5
ValeryS, но я на плюсах пишу, не думал, что можно изощренно так решить проблему. Я просто изначально намеревался в двумерном виде представить.
ValeryS
Модератор
6556 / 5022 / 464
Регистрация: 14.02.2011
Сообщений: 16,763
18.06.2013, 01:20 #6
Цитата Сообщение от beta-particle Посмотреть сообщение
ValeryS, но я на плюсах пишу,
А плюсы в этом смысле не далеко от С ушли
beta-particle
4 / 4 / 0
Регистрация: 07.01.2013
Сообщений: 103
18.06.2013, 01:21  [ТС] #7
ValeryS, по крайней мере, там двумерный массив определен.
ValeryS
Модератор
6556 / 5022 / 464
Регистрация: 14.02.2011
Сообщений: 16,763
18.06.2013, 01:24 #8
Цитата Сообщение от beta-particle Посмотреть сообщение
Я просто изначально намеревался в двумерном виде представить.
Не получится данные не будут лежать в памяти рядом
можно создать квази двухмерный

C++
1
2
3
4
5
6
7
int a=5;
int b=10;
int* arr=new int[a*b]
// и обращатся так
for(int i=0; i<a;i++)
 for(int j=0;j<b;j++)
   arr[i*a+b]=0;
beta-particle
4 / 4 / 0
Регистрация: 07.01.2013
Сообщений: 103
18.06.2013, 01:26  [ТС] #9
ValeryS, интересная задумка, только не подскажите ли, как обращаться к элементам массива, прделоженного newyork7776-ом?
ValeryS
Модератор
6556 / 5022 / 464
Регистрация: 14.02.2011
Сообщений: 16,763
18.06.2013, 01:27 #10
Цитата Сообщение от beta-particle Посмотреть сообщение
ValeryS, по крайней мере, там двумерный массив определен.
серьезно
если ты можешь написать так
int a[2][3]
это еще не значит что это полноценный двумерный массив
в памяти он ляжет как одномерный из 6 элементов
а попробуй как в фортране поменять строчки местами (не копируя их вручную)
beta-particle
4 / 4 / 0
Регистрация: 07.01.2013
Сообщений: 103
18.06.2013, 01:29  [ТС] #11
ValeryS, с данным языком я не знаком.
Dani
1393 / 637 / 57
Регистрация: 11.08.2011
Сообщений: 2,282
Записей в блоге: 2
Завершенные тесты: 1
18.06.2013, 01:31 #12
Цитата Сообщение от ValeryS Посмотреть сообщение
а попробуй как в фортране поменять строчки местами (не копируя их вручную)
а как еще можно?
ValeryS
Модератор
6556 / 5022 / 464
Регистрация: 14.02.2011
Сообщений: 16,763
18.06.2013, 01:32 #13
Цитата Сообщение от beta-particle Посмотреть сообщение
ValeryS, интересная задумка, только не подскажите ли, как обращаться к элементам массива, прделоженного newyork7776-ом?
а к нему то как раз просто
C++
1
Mas[i][j]
с точки зрения обращения ты не заметишь разницу
но в отличии от статического массива ты не сможешь сделать так
C++
1
2
int arr[10][10]
arr[10][0]=5;
в статическом ты переходишь на следующую строчку
в массиве массивов выход за пределы со всеми его прелестями
Dani
1393 / 637 / 57
Регистрация: 11.08.2011
Сообщений: 2,282
Записей в блоге: 2
Завершенные тесты: 1
18.06.2013, 01:33 #14
В паскале знаю так:
Pascal
1
2
3
4
var A: array [1..10, 1..10] of longint;
begin
A[2]:= A[1];
end.
Но это же тоже как-бы вручную.

Добавлено через 36 секунд
В плюсах можно swap_ranges
ValeryS
Модератор
6556 / 5022 / 464
Регистрация: 14.02.2011
Сообщений: 16,763
18.06.2013, 01:34 #15
Цитата Сообщение от Dani Посмотреть сообщение
а как еще можно?
в том то и дело что в фортране куча методов которые работают с массивами
а С(ну и плюсы) взял из него только организацию данных
однотипные данные которые лежат рядом
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.06.2013, 01:34
Привет! Вот еще темы с ответами:

Как объявить двумерный динамический массив - C++
int *matrix = new int ; че ругается ? а как сделать если без констант надо ?

Как заполнить двумерный динамический массив? - C++
вот я создал двумерный динамический массив (правильно надеюсь): int row=2; for (int i=0; i&lt;dl; i++){if ('!'==str){row+=1;}}; int...

Как сделать двумерный динамический массив на 4 столбца ? - C++
Что нужно изменить в этом коде чтобы у Mass1 стало 4 столбца? я побывал менять Mass2 = new int64_t; 2 на 4 но программа перестает работать ...

Как передать в функцию двумерный динамический массив? - C++
#include &lt;iostream&gt; #include&lt;time.h&gt; #include&lt;cstdlib&gt; using namespace std; void zap(int array, int n) { ...


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

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

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