Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/91: Рейтинг темы: голосов - 91, средняя оценка - 4.60
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886

Инициализация двумерного Динамического массива

14.12.2012, 19:58. Показов 17336. Ответов 16
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
У меня вопрос. Могу ли я создать двумерный динамический массив и инициализировать его своими значениями в коде программы.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
 
using namespace std;
 
int main()
{
    int n=6;
 
    int **M=new int*[n];
      for (int i=0;i<n;i++) M[i]=new int [n];
 
    M[n][n]=     //Попытка инициализации как статического приводит к ошибке
     {   
         1,2,3,4,5,6,
         7,8,9,8,7,6,
         5,4,3,2,1,0,
         1,2,3,4,5,6,
         7,8,9,0,9,1,
         5,3,1,1,3,4
     };
     
    return 0;
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
14.12.2012, 19:58
Ответы с готовыми решениями:

Инициализация двумерного динамического массива
Как задать численные значения элементам двумерного динамического массива при его инициализации? int n=2; double **a; ...

Обьявление и инициализация динамического двумерного массива в классе
Пытаюсь создать в классе динамический двумерный массив, не могу понять что я делаю не так( При вызове деструктора - ошибка class...

Инициализация двумерного динамического массива внутри программы
Здравствуйте! Подскажите, пожалуйста, можно ли как-то инициализировать двумерный динамический массив значениями без ввода при запуске?...

16
387 / 151 / 16
Регистрация: 12.05.2011
Сообщений: 450
14.12.2012, 20:01
Как-то так должно быть:
C++
1
2
3
4
5
6
    M[6][3]= 
     {   
         { 1,2,3,4,5,6 }, 
         { 7,8,9,8,7,6 }, 
         { 5,4,3,2,1,0 }
     };
0
go
Эксперт С++
3646 / 1378 / 243
Регистрация: 16.04.2009
Сообщений: 4,526
14.12.2012, 20:04
Цитата Сообщение от yekka Посмотреть сообщение
Как-то так должно быть:
Так у него массив динамический
1
387 / 151 / 16
Регистрация: 12.05.2011
Сообщений: 450
14.12.2012, 20:07
Цитата Сообщение от go Посмотреть сообщение
Так у него массив динамический
тогда в цикле только

Добавлено через 1 минуту
и вообще, что за бред? какой динамический массив с заранее известным инициализатором?
2
go
Эксперт С++
3646 / 1378 / 243
Регистрация: 16.04.2009
Сообщений: 4,526
14.12.2012, 20:12
Цитата Сообщение от yekka Посмотреть сообщение
и вообще, что за бред? какой динамический массив с заранее известным инициализатором?
Вот тут и оно. Сразу напрашивается std::vector с инициализацией в стиле C++11.
1
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
14.12.2012, 20:18  [ТС]
Я понимаю, что вектор напрашивается.
Но меня больше массив интересует.

Я бы сказал, что это не бред, сказал бы моя потребность. Возможно не осуществимая.

Не по теме:

А вообще люди бредили, бредили и полетели в космос

0
387 / 151 / 16
Регистрация: 12.05.2011
Сообщений: 450
14.12.2012, 20:23
Цитата Сообщение от daslex Посмотреть сообщение
двумерный динамический массив
в твоем коде, кстати, не двумерный массив, а вполне себе одномерный массив указателей.
0
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
14.12.2012, 20:27  [ТС]
Цитата Сообщение от yekka Посмотреть сообщение
одномерный массив указателей.
Не отводите тему. Двумерный динамический массив это одномерный массив указателей на одномерные массивы и есть.

Меня интересует только вопрос, который я спросил
0
387 / 151 / 16
Регистрация: 12.05.2011
Сообщений: 450
14.12.2012, 20:34
Цитата Сообщение от daslex Посмотреть сообщение
Двумерный динамический массив это одномерный массив указателей на одномерные массивы и есть.
это не так.


А по теме можно так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <cstring>
#include <iostream>
 
using namespace std;
 
const int Etalon[6][6]=
{
    1,2,3,4,5,6,
    7,8,9,8,7,6,
    5,4,3,2,1,0,
    1,2,3,4,5,6,
    7,8,9,0,9,1,
    5,3,1,1,3,4
};
 
int main()
{
    int (*M)[6] = new int[6][6];
    memcpy(M, Etalon, sizeof(Etalon));
    std::cout << M[4][4] << std::endl;
    return 0;
}
Заметьте, с использованием настоящего двумерного массива
0
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
14.12.2012, 20:40  [ТС]
Ну и почему я не могу задать n?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
int main()
{
    int n=6;
 
    int (*M)[n] = new int[n][n];
    memcpy(M, Etalon, sizeof(Etalon));
    std::cout << M[4][4] << std::endl;
 
    for (int i=0;i<6;i++)
    {
        for (int j=0;j<N;j++)
        {
          cout<<M[i][j]<<"  ";
        }
        cout<<endl;
    }
    return 0;
}
Вы с динамическим программированием совсем не знакомы?
0
387 / 151 / 16
Регистрация: 12.05.2011
Сообщений: 450
14.12.2012, 20:43
Цитата Сообщение от daslex Посмотреть сообщение
Вы с динамическим программированием совсем не знакомы?
боюсь снова Вас разочаровать, но, строго говоря, Ваш вопрос никак не относится к динамическому программированию
0
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
14.12.2012, 20:52  [ТС]

Не по теме:

Ваше не знание вас не красит. Я Вам вопрос по вашей программе. Но вы не можете ответить. Зато чего-то доказываете. Глупо.



Ответ на мой изначальный вопрос не получен.

Добавлено через 2 минуты
Показать фокус?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <cstring>
#include <iostream>
 
using namespace std;
 
 
int main()
{
    const int N=3;
    int M[3][3]=
    {
        0,1,2,
        3,4,5,
        6,7,8
    };
 
    for (int i=0;i<N*N;i++)cout<<M[0][i]<<"  ";
    return 0;
}
Чем ваш тип массивов отличается от одномерного?
0
0 / 0 / 0
Регистрация: 03.01.2020
Сообщений: 12
22.03.2020, 17:01
тоже не могу инициализировать динамический двумерный массив
0
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
22.03.2020, 17:38  [ТС]
Нельзя.

Добавлено через 10 минут
Всё, что можно, это инициализировать часть каждой строки по отдельности, если знать, что количество значений инициализации для строки не будет больше, чем строка может вместить.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
 
using namespace std;
 
int main(){
    int ROW = 3, COL = 5;
    int **arr = new int * [ROW];
    for (int i=0; i<ROW; i++) arr[i] = new int[COL]{1,2,3,4,5};
 
       for (int i=0; i<ROW; i++){
        for (int j=0; j<COL; j++){
            cout << arr[i][j] << '\t';
        }   cout << '\n';
       }
 
    for (int i=0; i<ROW; i++) delete []arr[i];
    delete []arr;
}
Если нужно инициализировать нулями, то достаточно инициализировать каждую строку пустыми фигурными скобками:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
 
using namespace std;
 
int main(){
    int ROW = 3, COL = 5;
    int **arr = new int * [ROW];
    for (int i=0; i<ROW; i++) arr[i] = new int[COL]{};
 
       for (int i=0; i<ROW; i++){
        for (int j=0; j<COL; j++){
            cout << arr[i][j] << '\t';
        }   cout << '\n';
       }
 
    for (int i=0; i<ROW; i++) delete []arr[i];
    delete []arr;
}
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
22.03.2020, 17:45
Maximun,
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
#include <iostream>
using namespace std;
 
int main()
{
    int n=3;
    
    int** a = new int*[n]
    {
        new int[n] {1, 2, 3},
        new int[n] {4, 5, 6},
        new int[n] {7, 8, 9}
    };
    
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < n; j++)        
            cout << a[i][j] << "  ";        
    cout << "\n";    
    }    
 
system("pause");
return 0;
}
нулями проще будет запись, если нужно сообщите
1
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
22.03.2020, 18:07  [ТС]
Память течёт, и пусть рекой течёт. Ошибся я.

Добавлено через 7 минут
Так можно, как Yetty, c C++11

Добавлено через 1 минуту
И как я показал (не инициализацию самого массива), с С++11.
До С++11 было нельзя.
0
901 / 478 / 93
Регистрация: 10.06.2014
Сообщений: 2,700
22.03.2020, 18:10
Вот так можно выделить память под двумерный динамический массив одним махом и "на месте" присвоить значения.
C++
1
2
3
4
5
6
7
#include <iostream>
 
int main()
{
    int(*p)[2] = new int[2][2]{{1,2},{3,4}};
    delete[] p;
}
Только в отличии от привычного способа в данном случае размер массива должен быть известен на этапе компиляции
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
22.03.2020, 18:10
Помогаю со студенческими работами здесь

Инициализация динамического массива
Создан динамический массив (при помощи функций). Пробую инициализировать при помощи фигурных скобок.:umnik: #include &quot;stdafx.h&quot;...

Инициализация динамического массива
Народ, подскажите как сделать так что бы, можно было задать размер массива через консоль, а не в коде через const (Если можете - объясните,...

Инициализация динамического массива
int main() { int a, i = 0; int *array = new int ; std::cout &lt;&lt; &quot;Enter numbers &quot; &lt;&lt; std::endl; while(std::cin &gt;&gt; a) { i &lt;...

Инициализация динамического массива
Прога генерирует случайные числа(1-100) выводит их, пока не встретится 98, сохраняя все в массиве. Но мне нужно очень, чтобы программа сама...

Инициализация Динамического массива
Друзья просмотрите пожалуйста мой динамический массив правильно ли я его длясебястолковал #include&lt;iostream&gt; using namespace...


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
Валидация и контроль данных табличной части документа перед записью
Maks 22.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в КА2. Задача: контроль и валидация данных табличной части документа перед записью с учетом регламента компании. . .
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru