4 / 4 / 6
Регистрация: 17.09.2012
Сообщений: 325
1

Как вывести трехмерный динамический массив

02.09.2014, 10:09. Показов 2040. Ответов 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
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
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
#include <iostream>
using namespace std;
//заполнение трехмерного динамического массива
void fillingmas3(int n,float *a,float ***mas3)
{       
    int l=0;
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<n;j++)
        {
            for(int k=0;k<n;k++)
            {
                if ((j>=n-1 && j<=4-k) ||(i>=k && j<=n-1))//условие заполнение трехмерного динамического массива
                {
                    /*if(l+1==n*n)
                    {
                        mas3[i][j][k]=a[l];
                        l=0;
                    }
                    else
                    {
                        mas3[i][j][k]=a[l];
                        l++;
                    }   */
                    mas3[i][j][k]=1;
                }                               
                else
                    mas3[i][j][k]=0;
            }
        }
        n--;
    }
}
//заполнение двухмерного динамического массива
void fillingmas2(int n,float *a,float **mas2)
{   
    int i = 0;
    int j = 1;
    mas2[0][0] = n*n; 
    for (int q = (n*n - 1); q>0;)//условие заполнения двухмерного динамического массива
    {
        for (; i < n && j >= 0; ++i, --j, --q)  mas2[i][j] = q;
        if (i < n && j<0) ++j;
        else    { --i; j += 2; }
        for (; i >= 0 && j < n; ++j, --i, --q)  mas2[i][j] = q;
        if (j < n)++i;
        else    { i += 2; --j; }
    }
    int l=0;
    //перенос данных из двухмерного динамического массива в одномерный
    for (int i = 0; i < n; ++i)
    {
        for (int j = 0; j < n; ++j)
        {
            a[l]=mas2[i][j];
            l++;
        } 
    }
}
//удаление динамических массивов
void deletemas(int n,float *a,float **mas2, float ***mas3)
{
    for (int i = 0; i < n; i++)
    {
        delete[] mas2[i];
    }
    delete[] mas2;
    for (int i = 0; i < n; i++)
    {
        for(int j=0;j<n;j++)
        {
            delete[] mas3[i][j];
        }
        delete [] mas3[i];
    }
    delete[] mas3;
    delete []a;
}
//отображение трехмерного динамического массива заполненого как нужно
void ShowFullCube(int n, float ***mas3)             
{
    int i,j,k;                                                             
    cout<<"\r\n\r\n\r\n";                                   
    for(k=n-1;k>=0;k--)                                        
    {
        for(j=0;j<n;j++)                                   
        {
            for(int l=n-j;l>=1;l--)           
                cout<<"   ";            
            for(i=0;i<n;i++)                   
                cout<<"     "<<mas3[i][j][k];
            cout<<"\r\n";                    
        }
        cout<<"\r\n\r\n\r\n";                   
    }
}
void main()
{
    int n;
    cout << "Insert n: ";
    cin >> n;
    float*** mas3 = new float**[n];
    for (int i = 0; i < n; i++)
    {
        mas3[i] = new float*[n];
        for(int j=0;j<n;j++)
        {
            mas3[i][j]=new float[n];
        }
    }
    float* a=new float[n*n];
    float** mas2 = new float*[n];
    for (int i = 0; i < n; i++)
    {
       mas2[i] = new float[n];
    }
    fillingmas2(n,a,mas2);
    fillingmas3(n,a,mas3);
    ShowFullCube(n,mas3);
    deletemas(n,a,mas2,mas3); 
    system("pause");
}
вот я делаю то же самое по сути, но без функции и работает все нормально, может я где неправильно что передаю в функцию или что-то упускаю, подскажите пожалуйста
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
#include <iostream>
using namespace std;
void main()
{   int n=5;
    float*** p = new float**[n];
    for (int i = 0; i < n; i++)
    {
        p[i] = new float*[n];
        for(int j=0;j<n;j++)
        {
            p[i][j]=new float[n];
        }
    }
    for(int i=0;i<5;i++)
    {
        for(int j=0;j<5;j++)
        {
            for(int k=0;k<5;k++)
            {
                if ((j>=n-1 && j<=4-k) ||(i>=k && j<=n-1))
                {
                    p[i][j][k]=1;
                }                   
                else
                    p[i][j][k]=0;
            }
        }
        n--;
    }
    int i,j,k;  
    n=5;
    cout<<"\r\n\r\n\r\n";                                   
    for(k=5-1;k>=0;k--)                                        
    {
        for(j=0;j<5;j++)                                   
        {
            for(int l=5-j;l>=1;l--)           
                cout<<"   ";            
            for(i=0;i<5;i++)                   
                cout<<"     "<<p[i][j][k];
            cout<<"\r\n";                    
        }
        cout<<"\r\n\r\n\r\n";                   
    }
    for (int i = 0; i < n; i++)
    {
        for(int j=0;j<n;j++)
        {
            delete[] p[i][j];
        }
        delete [] p[i];
    }
    delete[] p;
    system ("pause");
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.09.2014, 10:09
Ответы с готовыми решениями:

Заполнить и вывести трехмерный динамический массив
Создать трехмерный динамический массив. Заполнить его случайными числами и вывести результат на...

Как создать динамический трехмерный массив и заполнить его случайными значениями?
Я больше по Java, но сейчас надо сделать пару задачек по плюсам. Одна из них звучит как-то так: ...

Трёхмерный динамический массив
Доброго времени суток! Не могу создать трёхмерный динамический массив! Точнее создаю один раз...

Трехмерный динамический массив
Здравствуйте друзья, я переписываю код с Delphi на C++. В Delphi был задан динамический трехмерный...

2
176 / 144 / 70
Регистрация: 01.05.2012
Сообщений: 414
02.09.2014, 10:25 2
итернал, в первой ф-ции зачем то n--. Убери и все будет работать.
1
4 / 4 / 6
Регистрация: 17.09.2012
Сообщений: 325
02.09.2014, 10:39  [ТС] 3
Цитата Сообщение от _script_ Посмотреть сообщение
итернал, в первой ф-ции зачем то n--. Убери и все будет работать.
оно нужно для правильного заполнения массива, но спасибо, подсказали в чем ошибка, щас придумаю как заменить на другой символ
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.09.2014, 10:39
Помогаю со студенческими работами здесь

Динамический трёхмерный массив
Товарищи, помогите найти ошибку. Создаю 3х мерный динамический массив: int z; cout&lt;&lt;&quot;Input...

Трехмерный динамический массив
Помогите создать трехмерный динамический массив, в c++ не сильно шарю, а в гугле нужной информации...

Трёхмерный динамический массив
Учусь делать многомерные динамические массивы. Написал прогу int _tmain(int argc, _TCHAR* argv)...

Динамический трёхмерный массив (создать)
Помогите создать трёхмерный динамический массив. int size=10; int ***Field; Field=new...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru