Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Слои в трехмерном массиве / 4 сообщений из 4, страница 1 из 1
25.11.2005, 09:48
    #33399117
Влад123
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Слои в трехмерном массиве
Подскажите пожалуйста, не могу разобраться, как в трехмерном массиве double dArray[4][3][3]; поменять местами значения элементов четных и нечетных слоев.

// dArray[l][j][k]


for(int l=0; l<4; l++)
{
// dArray[l+1] = dArray[l]; ошибка - левым операндом должен быть адрес переменной.
Подсказали использоать указатель на массив
double (*pn)[3] = dArray[l]; а как его использовать не понятно.
// dArray[l] = pn [l]; ошибка
}
...
Рейтинг: 0 / 0
25.11.2005, 13:03
    #33399824
SnowMan2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Слои в трехмерном массиве
Типа такого
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
double a;
int i,j,k;
for(i= 0 ; i< 3 ; i++) {
   for (j= 0 ; j< 3 ; j++) {
       for(k= 0 ; k < 4 ; k+= 2 ) {
           a = dArray[k][i][j];
           dArray[k][i][j] = dArray[k+ 1 ][i][j];
           dArray[k][i][j] = a;
       } // for
   } // for
} // for
...
Рейтинг: 0 / 0
25.11.2005, 13:40
    #33399957
Влад123
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Слои в трехмерном массиве
Мне нужно обязательно с использованием указателя на многомерный массив, что то вроде такого:
double (*pn)[3] = dArray[l];
.......................... = dArray[l+1];
Потом меняем местами...
...
Рейтинг: 0 / 0
28.11.2005, 19:46
    #33404445
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Слои в трехмерном массиве
Массив в С это просто кусок памяти. Можно в принципе так извратится:
Код: plaintext
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.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
#include <stdio.h>
#include <stdlib.h>
#include <mem.h>

void init_array(void);
void print_array(void);
double dArray[ 4 ][ 3 ][ 3 ];

void init_array() {
	int i1, i2, i3;
	for(i1= 0 ; i1< 4 ; i1++) {
		for(i2= 0 ; i2< 3 ; i2++) {
			for(i3= 0 ; i3< 3 ; i3++) {
				dArray[i1][i2][i3] = i1* 3 . 0  + i2 + ((double)(i3+ 1 ) /  10 . 0 );
			}
		}
	}
}

void print_array() {
	int i1, i2, i3;
	for(i1= 0 ; i1< 4 ; i1++) {
		printf("\t{");
		for(i2= 0 ; i2< 3 ; i2++) {
			if(i2> 0 ) printf(", ");
			printf(" {");
			for(i3= 0 ; i3< 3 ; i3++) {
				if(i3> 0 ) printf(", ");
				printf("%4.1lf", dArray[i1][i2][i3]);
			}
			printf("}");
		}
		printf("}\n");
	}
}

void main() {
	int i;
	double dTempArray[ 3 ][ 3 ];

	init_array();
	printf("Before:\n");
	print_array();

	for(i= 0 ; i< 4 ; i++) {
		if(i& 1 ) {
			memcpy(dTempArray, dArray[i], sizeof(dTempArray));
			memcpy(dArray[i], dArray[i- 1 ], sizeof(dTempArray));
			memcpy(dArray[i- 1 ], dTempArray, sizeof(dTempArray));
		}
	}
	printf("After:\n");
	print_array();
}
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Слои в трехмерном массиве / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]