Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 5.00/15: Рейтинг темы: голосов - 15, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 20.12.2020
Сообщений: 233

Как сначала объявить двумерный массив а потом инициализировать его размер?

28.05.2021, 23:16. Показов 3035. Ответов 29
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как сначала объявить двумерный массив а потом инициализировать его размер?
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
28.05.2021, 23:16
Ответы с готовыми решениями:

Как объявить и инициализировать двумерный массив
Доброго времени суток, уважаемые форумчане! Недавно решил постичь ДЗЕН STL-контейнеров C++ и начал с векторов. С одномерными векторами...

Как объявить многомерный массив и сразу инициализировать его?
Методом проб выяснил, что объявить и сразу проинициализировать многомерный массив можно так (пример с двумерным): MatrixArray: Array...

Объявить массив, но не инициализировать его
Здравствуйте. Умею кодить на яве, сейчас учусь на паскале и меня интересует вопрос: Можно ли объявить массив, не указывая его размер сразу?...

29
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
29.05.2021, 01:05
почему Вас это интересует ? сначала задавайте размер, а затем объявляйте массив соответствующего размера
0
0 / 0 / 0
Регистрация: 25.11.2020
Сообщений: 243
29.05.2021, 01:20
C++
1
2
3
4
5
6
7
int X[m][n];
    for(int i=0; i<m; i++){
        for(int j=0; j<n; j++){
            cout <<"Введите X["<<i<<"]["<<j<<"] : ";
            cin >>X[i][j];
}
}
0
 Аватар для ПерС
587 / 490 / 371
Регистрация: 05.11.2013
Сообщений: 1,271
Записей в блоге: 6
29.05.2021, 04:44
Лучший ответ Сообщение было отмечено MicMaclaynd как решение

Решение

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
30
31
32
33
#include <iostream>
using namespace std;
 
int main() {
 const int n = 3, m = 3;
 int i, j; 
 double val;
 
 //Выделение памяти под матрицу
 double **a = new double *[n];
 for (i = 0; i<n; i++) a[i] = new double[m];
 
 //Ввод динамической матрицы с проверкой корректности ввода (через cin)
 for (i = 0; i < n; i++) {
  for (j = 0; j < m; j++) {
   cout << endl << "Item A[" << i << "," << j << "]=";
   while (!(cin >> val)) { //Простой вариант без try-catch
   cin.clear();
   while (cin.get() != '\n') continue;
   cout << "Error! Please, type it again" << endl;
  }
  a[i][j] = val; 
  }
 }
 
 //Вывод матрицы по строкам
 for (i = 0; i < n; i++) {
  cout << endl;
  for (j = 0; j < m; j++) cout << a[i][j] << " ";
 }
 
 cin.get(); cin.get(); return 0;
}
здесь для простоты нет контроля выделения памяти и освобождения через delete []
размерности могли быть не описаны константами, а откуда-то введены или прочитаны
0
"C with Classes"
2022 / 1404 / 523
Регистрация: 16.08.2014
Сообщений: 5,885
Записей в блоге: 1
29.05.2021, 07:06
Цитата Сообщение от MicMaclaynd Посмотреть сообщение
Как сначала объявить двумерный массив а потом инициализировать его размер?
в С по ходу и в с++ есть массивы массивов, а что такое двумерный уже не знаю
0
half-horse half-gateway
117 / 83 / 43
Регистрация: 10.05.2016
Сообщений: 563
29.05.2021, 10:22
Цитата Сообщение от _stanislav Посмотреть сообщение
массивы массивов
Это, как бы, и есть двумерный массив. Одномерный массив - это обычный массив.
0
"C with Classes"
2022 / 1404 / 523
Регистрация: 16.08.2014
Сообщений: 5,885
Записей в блоге: 1
29.05.2021, 10:38
Цитата Сообщение от BlackStoneBlack Посмотреть сообщение
это обычный массив
массивов
0
half-horse half-gateway
117 / 83 / 43
Регистрация: 10.05.2016
Сообщений: 563
29.05.2021, 11:47
Цитата Сообщение от _stanislav Посмотреть сообщение
массивов
Одномерный? Нет.
0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
29.05.2021, 11:57
Играет роль как выделятся память: если динамически то да это по сути массив массив или массив указателей на массив,
если же статически то n-мерный массив это обычно сплошной кусок памяти т.е. обычный одномерный массив с перерасчетом индексов.
0
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,536
Записей в блоге: 1
29.05.2021, 12:11
C++
1
2
3
4
int* arr = new int[m];
arr[0] = new int[m*n];
for (int i=1; i<m; ++i)
  arr[i]=arr[i-1]+n;
0
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,818
29.05.2021, 12:50
Цитата Сообщение от BlackStoneBlack Посмотреть сообщение
Одномерный? Нет.
Допустим есть вот такой псевдокод, это какой массив?
C++
1
2
3
4
int main()
{
    T arr[10];
}
0
"C with Classes"
2022 / 1404 / 523
Регистрация: 16.08.2014
Сообщений: 5,885
Записей в блоге: 1
29.05.2021, 14:45
Цитата Сообщение от DrOffset Посмотреть сообщение
T arr[10];
это массив https://youtu.be/JMajqHlpISk?l... WQy9dNeOjI
0
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,818
29.05.2021, 14:47
Цитата Сообщение от _stanislav Посмотреть сообщение
это массив
Пусть он ответит. Какой это массив по его мнению (одномерный? двумерный? или еще какой?).
0
"C with Classes"
2022 / 1404 / 523
Регистрация: 16.08.2014
Сообщений: 5,885
Записей в блоге: 1
29.05.2021, 14:48
Цитата Сообщение от DrOffset Посмотреть сообщение
Пусть он ответит. Какой это массив по его мнению.
сорян
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
13180 / 6816 / 1821
Регистрация: 18.10.2014
Сообщений: 17,251
29.05.2021, 15:26
Цитата Сообщение от MicMaclaynd Посмотреть сообщение
Как сначала объявить двумерный массив а потом инициализировать его размер?
Никак.
0
half-horse half-gateway
117 / 83 / 43
Регистрация: 10.05.2016
Сообщений: 563
29.05.2021, 23:15
Цитата Сообщение от DrOffset Посмотреть сообщение
Допустим есть вот такой псевдокод, это какой массив?
Одномерный. Если возникают сомнения - гуглите.

Добавлено через 13 минут
Цитата Сообщение от MicMaclaynd Посмотреть сообщение
Как сначала объявить двумерный массив а потом инициализировать его размер?
Разве что через указатели (динамические массивы):
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
30
31
32
33
34
35
36
37
// One-dimensional array
int* arr1d = nullptr;
 
// Do something
 
size_t size = 0;
std::cout << "Size: ";
std::cin >> size;
arr1d = new int[size];
 
// Do all operations with array
 
delete[] arr1d;
 
// Two-dimensional array
int** arr2d = nullptr;
 
// Do something
 
size_t rows = 0, columns = 0;
 
std::cout << "Rows: ";
std::cin >> rows;
arr = new int*[rows];
 
std::cout << "Columns: ";
std::cin >> columns;
 
for (size_t i = 0; i < rows; i++)
    arr2d[i] = new int[columns];
 
// Do all operations with array
 
for (size_t i = 0; i < columns; i++)
    delete[] arr2d[i];
 
delete[] arr2d;
0
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,818
29.05.2021, 23:26
Цитата Сообщение от BlackStoneBlack Посмотреть сообщение
Одномерный.
А если
C++
1
using T = int[10];
?
0
half-horse half-gateway
117 / 83 / 43
Регистрация: 10.05.2016
Сообщений: 563
29.05.2021, 23:34
Цитата Сообщение от DrOffset Посмотреть сообщение
А если using T = int[10]; ?
А что это по факту меняет? Ну напишите Вы T arr вместо int[10] arr - сути это не изменит. Конечно, другой человек будет сидеть и гадать, что да как, но это уже на Вашей совести.
0
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,818
29.05.2021, 23:37
Цитата Сообщение от BlackStoneBlack Посмотреть сообщение
А что это по факту меняет?
Ну это замечательно, что ничего не меняет.

Напоминаю ветвь разговора:
Цитата Сообщение от _stanislav Посмотреть сообщение
в С по ходу и в с++ есть массивы массивов, а что такое двумерный уже не знаю
Далее:
Цитата Сообщение от _stanislav Посмотреть сообщение
Цитата Сообщение от BlackStoneBlack Посмотреть сообщение
Одномерный массив - это обычный массив.
массивов
Далее:
Цитата Сообщение от DrOffset Посмотреть сообщение
Допустим есть вот такой псевдокод, это какой массив?
C++
1
2
3
4
int main()
{
    T arr[10];
}
Далее:
Цитата Сообщение от BlackStoneBlack Посмотреть сообщение
Одномерный.
Собственно о чем это я. О том, что любой настоящий двумерный массив в С++ - это одномерный массив массивов.

Массивы указателей предлагаю вообще не рассматривать, потому что они реализуют двумерный массив, но не являются им.
0
half-horse half-gateway
117 / 83 / 43
Регистрация: 10.05.2016
Сообщений: 563
29.05.2021, 23:49
DrOffset, нет, конечно, можно гнуть пальцы и выделываться, но только зачем? Безусловно, Вы правы, с технической точки зрения все так. Но как мне кажется, тут просто-напросто нужно опираться на контекст - идет речь о логической структуре или самой реализации. Как видно из нашей беседы - я опирался на первое, Вы - на второе. Только и всего, как по мне.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
29.05.2021, 23:49
Помогаю со студенческими работами здесь

Объявить массив символов и инициализировать его 6 фамилиями
Здравствуйте. Стоит такая задача: Объявить массив символов и инициализировать его 6 фамилиями. Объявлять нужно с помощью char?...

Как объявить динамический двумерный массив и заполнить его
Здравствуйте,не могли бы вы еще кое-чем помочь.У меня есть есть матричный массив,с неуказанным кол-вом элементов. Dim Files(,) As String ...

Объявить массив указателей, а потом его заполнить
есть конструкция: int i = 1; int b = i; int* imass = {&amp;i,&amp;b}; i=2; b=3; ...

Во второй массив сначала переписать сначала положительные, потом 0, потом отрицательные
Не могу решить задачу, прямо застрял на ней. Помогите, пожалуйста. Нужно: заполнить массив из 10 элементов положительными и...

Как объявить двумерный массив и сделать его сортировку, имея моё начало кода?
Здравствуйте! Прошу помощи. Не знаю, как объявить двумерный массив и сделать его сортировку, исходя из кода ниже. Именно такое начало....


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 30.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru