15.02.2011, 19:54. Просмотров 585. Ответов 4
Смысл такой, имеется трехмерный массив A[50][50][50]. Данные считываются с файла(тут все верно). Хотелось бы обращаться к элементам данного массива по индексам, начинающимся не с нуля как обычно, а задать самому интервалы индексирования(A[l1...h1][l2...h2][l3...h3]).
Видимо чего-то недопонел: программа не работает. Код полностью:
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
| #include<stdio.h>
#include<conio.h>
#include<iostream.h>
void main()
{
int A[50][50][50],
l1,
l2,
l3,
h1,
h2,
h3,
D1,
D2,
D3 = 1,
i,
j,
k,
Index,
Sum=0;
FILE *f;
cout << "Index: \n";
cin >> l1 >> h1 >> l2 >> h2 >> l3 >> h3;
D2 = (h3 - l3 + 1) * D3;
D1 = (h2 - l2 + 1) * D2;
//Zapolnenie dannih
f = fopen("Data.txt", "r");
for(i = 0; i < h1 - l1 + 1; i++)
for(j = 0; j < h2 - l2 + 1; j++)
for(k = 0; k < h3 - l3 + 1; k++)
fscanf(f, "%d", &A[i][j][k]);
fclose(f);
Index = (0 - l1) * D1 + (0 - l2) * D2 + (0 - l3) * D3;
int ***B;
**B = &**A[-Index];
for(i = l1; i <= h1; i++)
for(j = l2; j <= h2; j++)
for(k = l3; k <= h3; k++)
{
cout << "B[" << i << "," << j << "," << k << "]= " << *(*(*(B + i) + j) + k) << endl;
Sum = Sum + *(*(*(B + i) + j) + k);
}
cout << "Summa= " << Sum << endl;
getch();
} |
|
Добавлено через 1 минуту
Доступ к элементам необходимо организовать именно используя данные формулы(D1,D2,D3,Index). Может, кто сталкивался с подобным?
Теорию не смог найти, как ни гуглил-(
Кто выручит хотя бы с теорией, уже буду благодарен.