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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 26, средняя оценка - 4.85
Я не зарегистрирован
Сообщений: n/a
#1

Присвоение значений многомерным массивам - C++

29.04.2008, 05:32. Просмотров 3237. Ответов 13
Метки нет (Все метки)

Одномерному массиву значения присваивать совсем просто:
C++
1
2
int A[5]={0,1,2,3,4};
A[0]=73;
Двумерному уже сложнее:
C++
1
2
3
4
5
6
int B[3][5]={
  {0,1,2,3,4},
  {5,6,7,8,9},
  {10,11,12,13,14}
};
b[0][0]=74;
А трехмерному совсем сложно:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
int B[2][3][5]={
  {
    {0,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},
  }
};
B[0][0][0]=75;
Теперь вопрос: как можно визуально удобным способом (св. выше) присвоить значения определенным элементам массива? Например массив, содержащий цвета рисунков 5x5 пикселей:
P[n][Y][X]; // n = номер рисунка, Y и X = координаты по осям y и x соответственно.

Если попытаться присвоить таким образом:
C++
1
2
3
4
5
6
7
8
9
int N[20][5][5];
 
P[1][5][5]={ // или P[1]={
  {255,255,255,255,255},
  {255,0,0,0,255},
  {255,0,0,0,255}, // черный квадрат :*)
  {255,0,0,0,255},
  {255,255,255,255,255},
};
то, естественно, ничего не получится:
parse error before '{'

Так как? Заранее спасибо за ответ...
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.04.2008, 05:32     Присвоение значений многомерным массивам
Посмотрите здесь:

лаба по одномерным и многомерным массивам - C++
Нужно сделать вот такую лабораторную, буду рад любой написанной функции, заранее спасибо. 1) N = 45 2) Функция для получения элементов...

Ошибка с присвоением значений к массивам - C++
Значение функции дроби,не могу присвоить к массиву... не получается подсчет ..Помогите плиз..с этим кусочком.... Код: double...

Присвоение значений - C++
Всем доброго времени суток, подскажите как присвоить переменной такое значение? 48847E5536130C10

Присвоение значений - C++
В течение работы программы в строковую переменную а1 случайным образом приходят имена переменных, объявленных в данной программе. Этим...

Присвоение значений элементам вложенной структуры - C++
Необходимо присвоить значение элементам массива структур struct message { unsigned char code; unsigned short length; struct body...

Присвоение значений всем элементам массива - C++
Как присвоить значение всем элементам массива наиболее простым способом думал что double massiv={1}; присваивает...

Enum перечисление переменных и присвоение им значений - C++
добрый день, работаю в среде qt, застала проблема в оптимизации кода, хочу перечислить переменные и присвоить им значение из списка ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Я не зарегистрирован
Сообщений: n/a
29.04.2008, 05:36     Присвоение значений многомерным массивам #2
Задача решается способом:
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
P[1][0][0]=255;
P[1][0][1]=255;
P[1][0][2]=255;
P[1][0][3]=255;
P[1][0][4]=255;
P[1][1][0]=255;
P[1][1][1]=0;
P[1][1][2]=0;
P[1][1][3]=0;
P[1][1][4]=255;
P[1][2][0]=255;
P[1][2][1]=0;
P[1][2][2]=0;
P[1][2][3]=0;
P[1][2][4]=255;
P[1][3][0]=255;
P[1][3][1]=0;
P[1][3][2]=0;
P[1][3][3]=0;
P[1][3][4]=255;
P[1][4][0]=255;
P[1][4][1]=255;
P[1][4][2]=255;
P[1][4][3]=255;
P[1][4][4]=255;
Но мне не хочется его применять.
ZwergZ
Сообщений: n/a
29.04.2008, 14:19     Присвоение значений многомерным массивам #3
Вы можете так сделать
C++
1
2
3
4
5
P[1][0][0]=255; P[1][0][1]=255; P[1][0][2]=255; P[1][0][3]=255; P[1][0][4]=255;
P[1][1][0]=255; P[1][1][1]=0; P[1][1][2]=0; P[1][1][3]=0; P[1][1][4]=255;
P[1][2][0]=255; P[1][2][1]=0; P[1][2][2]=0; P[1][2][3]=0; P[1][2][4]=255;
P[1][3][0]=255; P[1][3][1]=0; P[1][3][2]=0; P[1][3][3]=0; P[1][3][4]=255;
P[1][4][0]=255; P[1][4][1]=255; P[1][4][2]=255; P[1][4][3]=255; P[1][4][4]=255;
тоже вполне визуально
Я не зарегистрирован
Сообщений: n/a
29.04.2008, 14:33     Присвоение значений многомерным массивам #4
Это значит, что просто перечислением значений ({1,2,3,4,5,…}) нельзя добиться поставленной цели?
Somebody
2786 / 1600 / 145
Регистрация: 03.12.2007
Сообщений: 4,189
Завершенные тесты: 1
30.04.2008, 19:05     Присвоение значений многомерным массивам #5
А чем это не нравится?
Код
int B[2][3][5]={
{
{0,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/a
01.05.2008, 02:39     Присвоение значений многомерным массивам #6
Somebody, тем, что это годится только для одного раза, при задании массива. Когда он задан, его элементам таким образом значения уже не присвоишь.
Я не зарегистрирован
Сообщений: n/a
04.05.2008, 17:58     Присвоение значений многомерным массивам #7
Ну, умелые программисты, неужели не встречались ранее с такой простой задачей?
igor_nf
118 / 12 / 1
Регистрация: 21.08.2007
Сообщений: 222
05.05.2008, 10:12     Присвоение значений многомерным массивам #8
Цитата Сообщение от Я не зарегистрирован Посмотреть сообщение
Ну, умелые программисты, неужели не встречались ранее с такой простой задачей?
Думаю "умелые программисты" ни разу не встречались с таким извратом, как хранение информации об изображениях в трёхмерном массиве). Почему бы не создать, ну хотя бы, список структур, каждая из которых хранит информацию о конкретном изображении?
Somebody
2786 / 1600 / 145
Регистрация: 03.12.2007
Сообщений: 4,189
Завершенные тесты: 1
05.05.2008, 14:58     Присвоение значений многомерным массивам #9
Цитата Сообщение от Я не зарегистрирован Посмотреть сообщение
Somebody, тем, что это годится только для одного раза, при задании массива. Когда он задан, его элементам таким образом значения уже не присвоишь.
Если надо весь массив забить не при создании, но заранее известными числами, то можно сделать константный массив, а потом просто скопировать его, куда надо будет.
igor_nf
118 / 12 / 1
Регистрация: 21.08.2007
Сообщений: 222
05.05.2008, 19:35     Присвоение значений многомерным массивам #10
Цитата Сообщение от Somebody Посмотреть сообщение
Если надо весь массив забить не при создании, но заранее известными числами, то можно сделать константный массив, а потом просто скопировать его, куда надо будет.
Можешь привести простейший пример ??
Somebody
2786 / 1600 / 145
Регистрация: 03.12.2007
Сообщений: 4,189
Завершенные тесты: 1
06.05.2008, 19:09     Присвоение значений многомерным массивам #11
Код
#include <mem.h>
void main()
{
int a[5]={0,1,2,3,4};
//А теперь надо забить весь массив другими числами
int a1[5]={5,6,7,8,9};
memcpy(&a1,&a,sizeof(a1));
}
Я не зарегистрирован
Сообщений: n/a
12.05.2008, 05:42     Присвоение значений многомерным массивам #12
Somebody, спасибо.

Но если нужно в трехмерный массив с известным первым индексом забить значения двух других? То есть:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <mem.h>
void main()
{
int N[20][5][5];
int ABC[5][5] =
  {
    {255,255,255,255,255},
    {255,0,0,0,255},
    {255,0,0,0,255},
    {255,0,0,0,255},
    {255,255,255,255,255}
};
memcpy(&N[0];&ABC;sizeof(N));
Мой пример правилен? То есть, после этого N[0][1][1] == 255?
Я не зарегистрирован
Сообщений: n/a
12.05.2008, 05:43     Присвоение значений многомерным массивам #13
И, кстати, обязательно ли ссылаться на массивы? Почему бы просто не указать их имена:
Код
memcpy(N[0];ABC;sizeof(N));
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.05.2008, 02:51     Присвоение значений многомерным массивам
Еще ссылки по теме:

Присвоение значений элементам двумерного динамического массива - C++
Я недавно начал программировать на языке С++, поэтому, естественно, многого не понимаю :( Вот создал я (пытался) двумерный динамический...

По массивам... - C++
Задан случайный массив. Нужно получить без повторений элементы, встречающиеся в массиве более одного раза. Вот что получилось: ...

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

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

Программа по массивам - C++
Ребя может кто помочь написать программу на экзамен. Вот задание: составить прогу для удвоения всех элементов двумерного массива А (размер...


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

Или воспользуйтесь поиском по форуму:
Я не зарегистрирован
Сообщений: n/a
13.05.2008, 02:51     Присвоение значений многомерным массивам #14
Следующий код работает правильно:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <mem.h>
void main()
{
int N[20][5][5];
int ABC[5][5] =
  {
    {255,255,255,255,255},
    {255,0,0,0,255},
    {255,0,0,0,255},
    {255,0,0,0,255},
    {255,255,255,255,255}
};
memcpy(N[0],ABC,sizeof(ABC));
Вопрос в другом: если мне нужно будет создать 20 таких двумерных матриц для N, мне придется создавать каждый раз новую ABC (ABC1, ABC2, …), а потом записывать ее значения в память нужного индекса N, или есть более доступный способ добиться той же цели?

Потому что записать двумерную матрицу в массив, увы, можно только при его инициализации. Позже — только по одному значению для каждого индекса (ABC[1][1]=255; ABC[1][2]=255; …).
Yandex
Объявления
13.05.2008, 02:51     Присвоение значений многомерным массивам
Ответ Создать тему
Опции темы

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