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

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

Восстановить пароль Регистрация
 
bohdan_si
12 / 12 / 2
Регистрация: 03.10.2012
Сообщений: 83
07.11.2013, 21:22     Как создать динамический двумерный массив #1
Можно ли создать на С++ динамический двухмерный масив? Как?
C++
1
2
3
4
5
int z , x ;
cin >> z ;
cin >> x ;
int *arr = new int(z);
int *arr1 = new int(x);
так не получаеться!
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
dzrkot
zzzZZZ...
 Аватар для dzrkot
516 / 346 / 53
Регистрация: 11.09.2013
Сообщений: 1,977
07.11.2013, 21:25     Как создать динамический двумерный массив #2
создаешь указатель на массив указателей, т.е. массив который будет хранить адреса первых элементов других массивов, примерно так:

C++
1
2
3
4
5
6
7
8
9
int **b=new int*[m];
 
for (int i =0;i<m;i++)
{
int a*=new int[n];
for (int j=0;j<n;j++)
a[j]=rand();
b[i]=&a[0];
}
Andrey027
0 / 0 / 0
Регистрация: 26.10.2013
Сообщений: 75
07.11.2013, 23:30     Как создать динамический двумерный массив #3
Народ помогите написать программу.
Задание такое:

Определить сумму элементов, расположенных на главной диагонали
матрицы, и произведение элементов, расположенных на побочной диагонали
матрицы.

Заранее сильно благодарен.
Sendy
1 / 1 / 0
Регистрация: 07.11.2013
Сообщений: 13
07.11.2013, 23:57     Как создать динамический двумерный массив #4
Смотри, все довольно просто. Тебе нужно сначала создать указатель на двумерный массив. Потом выделить память для строк, а потом выделить память для всех элементов строк, т.е для всех столбцов. И не забывай освобождать память. Это тебе не c# где есть отличный сборщик мусора. Если не будешь освобождать память то в скором времени тебе придется перезагрузить комп. Вот пример кода

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
// N - это количество строк  M - это количество столбцов
int **a; // делаем указать на двумерный массив
a = new int*[N]; // инициализируем строки
for(int i=0;i<M;i++) 
        a[i] = new int[M]; // инициализируем столбцы
// теперь заполним массив
for(int i = 0 ; i<N; i++)
{
    for(int j = 0; j<M; j++)
    {
         a[i][j] = 1; // весь массив будет заполнен единицами, обязательно нужно чем то заполнить, так как если 
                        // обратиться к элементу массива который не заполнен, то прога вылетит 
    }
}
 
// теперь можно вывести все элементы на экран
for(int i = 0 ; i<N; i++)
{
    for(int j = 0; j<M; j++)
    {
         cout<<a[i][j]<<"  ";
    }
    cout<<endl; // endl переносит каретку на другую строку (проще говоря перенос строки), можно еще записать как "\n"  
}
 
// теперь нужно удалить все из памяти
for (int i=0;i<M;i++) delete [] a[i]; // сначала удалим все столбцы
delete [] a; // а теперь все строки
// готово...есть еще несколько способов реализации, но это нужно вспоминть
Andrey027
0 / 0 / 0
Регистрация: 26.10.2013
Сообщений: 75
08.11.2013, 00:16     Как создать динамический двумерный массив #5
Не знаю но прога у меня не пашет чета. Можешь по подробней

Добавлено через 2 минуты
Цитата Сообщение от Andrey027 Посмотреть сообщение
Не знаю но прога у меня не пашет чета. Можешь по подробней
или хотя бы полный код скинуть
Sendy
1 / 1 / 0
Регистрация: 07.11.2013
Сообщений: 13
08.11.2013, 00:17     Как создать динамический двумерный массив #6
Цитата Сообщение от Andrey027 Посмотреть сообщение
Не знаю но прога у меня не пашет чета. Можешь по подробней
Ну ты весь код в main добавь. Вообще это пример для вижуалки, в ней уверен что работать будет. А в других возможно что то над поменять.

Пиши конкретнее что не пашет....Что компилятор говорит?
Andrey027
0 / 0 / 0
Регистрация: 26.10.2013
Сообщений: 75
08.11.2013, 00:19     Как создать динамический двумерный массив #7
1>------ Построение начато: проект: 64, Конфигурация: Debug Win32 ------
1>Построение начато 07.11.2013 23:18:42.
1>InitializeBuildStatus:
1> Обращение к "Debug\64.unsuccessfulbuild".
1>ClCompile:
1> 64.cpp
1>c:\users\cazhushko\desktop\64\64\64.cpp(8): error C2144: синтаксическая ошибка: перед "int" требуется ";"
1>c:\users\cazhushko\desktop\64\64\64.cpp(9): error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>c:\users\cazhushko\desktop\64\64\64.cpp(9): error C2040: a: "int" отличается по уровням косвенного обращения от "int **"
1>c:\users\cazhushko\desktop\64\64\64.cpp(9): error C2065: N: необъявленный идентификатор
1>c:\users\cazhushko\desktop\64\64\64.cpp(9): error C2440: инициализация: невозможно преобразовать "int **" в "int"
1> Не существует контекста, в котором такое преобразование возможно
1>c:\users\cazhushko\desktop\64\64\64.cpp(10): error C2059: синтаксическая ошибка: for
1>c:\users\cazhushko\desktop\64\64\64.cpp(10): error C2143: синтаксическая ошибка: отсутствие ")" перед ";"
1>c:\users\cazhushko\desktop\64\64\64.cpp(10): error C2143: синтаксическая ошибка: отсутствие ";" перед "<"
1>c:\users\cazhushko\desktop\64\64\64.cpp(10): error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>c:\users\cazhushko\desktop\64\64\64.cpp(10): error C2143: синтаксическая ошибка: отсутствие ";" перед "++"
1>c:\users\cazhushko\desktop\64\64\64.cpp(10): error C2086: int i: переопределение
1> c:\users\cazhushko\desktop\64\64\64.cpp(10): см. объявление "i"
1>c:\users\cazhushko\desktop\64\64\64.cpp(10): error C2059: синтаксическая ошибка: )
1>c:\users\cazhushko\desktop\64\64\64.cpp(13): error C2059: синтаксическая ошибка: for
1>c:\users\cazhushko\desktop\64\64\64.cpp(13): error C2143: синтаксическая ошибка: отсутствие ")" перед ";"
1>c:\users\cazhushko\desktop\64\64\64.cpp(13): error C2143: синтаксическая ошибка: отсутствие ";" перед "<"
1>c:\users\cazhushko\desktop\64\64\64.cpp(13): error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>c:\users\cazhushko\desktop\64\64\64.cpp(13): error C2086: int i: переопределение
1> c:\users\cazhushko\desktop\64\64\64.cpp(10): см. объявление "i"
1>c:\users\cazhushko\desktop\64\64\64.cpp(13): error C2143: синтаксическая ошибка: отсутствие ";" перед "++"
1> c:\users\cazhushko\desktop\64\64\64.cpp(10): см. объявление "i"
1>c:\users\cazhushko\desktop\64\64\64.cpp(13): error C2059: синтаксическая ошибка: )
1>c:\users\cazhushko\desktop\64\64\64.cpp(14): error C2143: синтаксическая ошибка: отсутствие ";" перед "{"
1>c:\users\cazhushko\desktop\64\64\64.cpp(14): error C2447: {: отсутствует заголовок функции (возможно, используется формальный список старого типа)
1>c:\users\cazhushko\desktop\64\64\64.cpp(23): error C2059: синтаксическая ошибка: for
1>c:\users\cazhushko\desktop\64\64\64.cpp(23): error C2143: синтаксическая ошибка: отсутствие ")" перед ";"
1>c:\users\cazhushko\desktop\64\64\64.cpp(23): error C2143: синтаксическая ошибка: отсутствие ";" перед "<"
1>c:\users\cazhushko\desktop\64\64\64.cpp(23): error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>c:\users\cazhushko\desktop\64\64\64.cpp(23): error C2086: int i: переопределение
1> c:\users\cazhushko\desktop\64\64\64.cpp(10): см. объявление "i"
1>c:\users\cazhushko\desktop\64\64\64.cpp(23): error C2143: синтаксическая ошибка: отсутствие ";" перед "++"
1> c:\users\cazhushko\desktop\64\64\64.cpp(10): см. объявление "i"
1>c:\users\cazhushko\desktop\64\64\64.cpp(23): error C2059: синтаксическая ошибка: )
1>c:\users\cazhushko\desktop\64\64\64.cpp(24): error C2143: синтаксическая ошибка: отсутствие ";" перед "{"
1>c:\users\cazhushko\desktop\64\64\64.cpp(24): error C2447: {: отсутствует заголовок функции (возможно, используется формальный список старого типа)
1>c:\users\cazhushko\desktop\64\64\64.cpp(33): error C2059: синтаксическая ошибка: for
1>c:\users\cazhushko\desktop\64\64\64.cpp(33): error C2143: синтаксическая ошибка: отсутствие ")" перед ";"
1>c:\users\cazhushko\desktop\64\64\64.cpp(33): error C2143: синтаксическая ошибка: отсутствие ";" перед "<"
1>c:\users\cazhushko\desktop\64\64\64.cpp(33): error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>c:\users\cazhushko\desktop\64\64\64.cpp(33): error C2086: int i: переопределение
1> c:\users\cazhushko\desktop\64\64\64.cpp(10): см. объявление "i"
1>c:\users\cazhushko\desktop\64\64\64.cpp(33): error C2143: синтаксическая ошибка: отсутствие ";" перед "++"
1> c:\users\cazhushko\desktop\64\64\64.cpp(10): см. объявление "i"
1>c:\users\cazhushko\desktop\64\64\64.cpp(33): error C2059: синтаксическая ошибка: )
1>c:\users\cazhushko\desktop\64\64\64.cpp(34): error C2059: синтаксическая ошибка: delete
1>c:\users\cazhushko\desktop\64\64\64.cpp(36): error C2447: {: отсутствует заголовок функции (возможно, используется формальный список старого типа)
1>
1>Сбой построения.
1>
1>Затраченное время: 00:00:00.29
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.11.2013, 00:21     Как создать динамический двумерный массив
Еще ссылки по теме:

Как заполнить двумерный динамический массив? C++
C++ Как создать двумерный динамический массив (принцип лото)?
Создать двумерный динамический массив заданного пользователем размера C++

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

Или воспользуйтесь поиском по форуму:
Sendy
1 / 1 / 0
Регистрация: 07.11.2013
Сообщений: 13
08.11.2013, 00:21     Как создать динамический двумерный массив #8
Цитата Сообщение от Andrey027 Посмотреть сообщение
Не знаю но прога у меня не пашет чета. Можешь по подробней

Добавлено через 2 минуты


или хотя бы полный код скинуть
Код который я скинул не для тебя Andrey, а для автора темы. Вот и не работает) Создай новую тему, а то не хорошо и не удобно разбираться с вопросом не по теме.
Yandex
Объявления
08.11.2013, 00:21     Как создать динамический двумерный массив
Ответ Создать тему
Опции темы

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