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

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

Войти
Регистрация
Восстановить пароль
 
vet
175 / 175 / 13
Регистрация: 08.04.2009
Сообщений: 1,309
#1

Преобразую трехмерный массив в одномерный и обратно - C++

19.02.2012, 10:37. Просмотров 864. Ответов 0
Метки нет (Все метки)

Доброго всем времени суток

пытаюсь преобразовать трехмерный массив в одномерный вектор, затем удалить 1-ю строку (плоскость) в этом векторе и полученное записать обратно в трехмерный массив, вот на последнем этапе и не пашет.....


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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
#include <iostream>
#include<vector>
#include <stdlib.h>
 
using namespace  std;
 
 
const int n = 4, m = 2, k=2;
 
 
int main( int argc, char* argv[] )
{
 
int irecv[n][m][k];
 
 
       for (int i = 0; i < n; i++)  
       {
            for (int j = 0; j < m; j++) 
            {
                for (int l = 0; l < k; l++) 
                {
                    irecv[i][j][l]=rand()%20;
                }
            }
        }
 
 
        for (int i = 0; i < n; i++) 
             {
            for (int j = 0; j < m; j++) 
            {
                for (int l = 0; l < k; l++) 
                {
    cout << "  irecv =  " << irecv[i][j][l] << "\n";
                }
                
            }
     }
 
 
     vector <int> tmp_irecv;
     
 
       for (int i = 0; i < n; i++)  
       {
            for (int j = 0; j < m; j++) 
            {
                for (int l = 0; l < k; l++) 
                {
                    tmp_irecv.push_back(irecv[i][j][l]);
                }
            }
        }
        
     cout << "\n\n";
     for (int i = 0; i < tmp_irecv.size(); i++) 
     {
         cout << tmp_irecv[i] << "    ";
     }
     cout << "\n\n";
     
     vector <int> :: iterator ii = tmp_irecv.begin();
     tmp_irecv.erase(ii,ii+m*k);
     
      for (int i = 0; i < tmp_irecv.size(); i++)    
     {
         cout << tmp_irecv[i] << "    ";
     }
     
       cout << "\n\n";
     
      for (int i = 0; i < n; i++)   
       {
            for (int j = 0; j < m; j++) 
            {
                for (int l = 0; l < k; l++) 
                {
                    irecv[i][j][l]=tmp_irecv[i*m*l + j*k + l];//!!!!!!!!!!!!!!!
                }
            }
        }
cout << "\n\n";
        for (int i = 0; i < n; i++) 
             {
            for (int j = 0; j < m; j++) 
            {
                for (int l = 0; l < k; l++) 
                {
    cout <<  "  2irecv =  " << irecv[i][j][l] << "\n";
                }
            }
     }
 
cin.get();
  
}
Добавлено через 4 минуты
все нашел, пока собственное сообщение перечитывал =)
C++
1
2
irecv[i][j][l]=tmp_irecv[i*m*l + j*k + l];//было
                }
C++
1
2
irecv[i][j][l]=tmp_irecv[i*m*k + j*k + l];//надо
                }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.02.2012, 10:37     Преобразую трехмерный массив в одномерный и обратно
Посмотрите здесь:
C++ Трехмерный массив char
C++ Трехмерный динамический массив
Создать трехмерный массив C++
C++ Трехмерный динамический массив
Правильно ли я заполняю трехмерный массив C++
C++ Преобразовать двухмерный массив в трехмерный
C++ Указатель на статический трехмерный массив
Вернуть указатель на трехмерный массив C++
Преобразовать шестимерный массив в трехмерный C++
Как вывести трехмерный динамический массив C++
C++ Трехмерный динамический массив типа char
C++ Создать трехмерный массив из динамических данных

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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