0 / 0 / 0
Регистрация: 08.03.2011
Сообщений: 9
1

Трехмерный динамический массив типа char

03.04.2011, 21:48. Показов 3166. Ответов 12
Метки нет (Все метки)

Здравствуйте! Я хочу создать двухмерную матрицу, каждым элементом которой должна являться символьная строка длиной 20. По сути получается трехмерный массив. При этом память под массив нужно выделять динамически. Подскажите, пожалуйста, как это сделать, а то у меня ошибка на ошибке.
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
//Mult.h
class Mult
{
public:
    Mult();
    ~Mult();
    void Set_Mult(int n);
private:
    char ***mult;
};
 
//Mult.cpp
#include <iostream>
#include <string.h>
#include <conio.h>
#include <locale.h>
using namespace std;
#include "Mult.h"
 
Mult::Mult()
{
    ***mult=NULL;
}
 
void Mult::Set_Mult(int n)
{
    setlocale(LC_ALL, ".1251");
    int i, j, m;
    mult = new char**[n];
    for(i=0; i < n; i++)
    {
        cin>>m;
        mult[i]=new char*[m];
        for(j=0; j<m; j++)
            for(k=0;k<20;k++)
            {
                cout<<"s["<<j<<"]:";
                puts(mult[i][j]);
            }
    }
}
 
//Main.cpp
#include <locale.h>
#include <iostream>
#include "Mult.h"
using namespace std;
 
int main()
{
    setlocale(LC_ALL, ".1251");
    Mult a;
    int n;
    cout<<"Введите количество множеств: ";
    cin>>n;
    a.Set_Mult(n);
    return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.04.2011, 21:48
Ответы с готовыми решениями:

двумерный динамический массив типа char
#include &lt;iostream&gt; #include &lt;iomanip&gt; #include &lt;windows.h&gt; using namespace std; void...

Двумерный динамический массив типа char
Как создать двумерный динамический массив типа char, в который будут записываться слова разной...

Посмотрите объявление вектора и попытайтесь создать динамический массив, содержащий элементы типа char
#include &lt;iostream&gt; #include &lt;vector&gt; using namespace std; int main() { vector&lt;int&gt; DynArrNums...

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

12
мну довольно <(-__-)l
217 / 206 / 15
Регистрация: 17.01.2010
Сообщений: 2,462
03.04.2011, 21:52 2
C++
1
2
3
4
5
6
for(j=0; j<m; j++)
{
        mult[i][j]=new char[20];
        cout<<"s["<<j<<"]:";
        puts(mult[i][j]);
}
Замени кусок в функции Set_Mult
0
236 / 173 / 25
Регистрация: 13.11.2010
Сообщений: 425
03.04.2011, 22:13 3
Если подключаете
C++
1
#include <string.h>
- так и используйте стринги.
0
Заблокирован
04.04.2011, 01:08 4
Здесь пример на трехмерный динамический массив типа int размерность 5х2х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
#include <iostream>
#define N 5
using namespace std;
 
int main()
{   int*** a;
    int i,j,k;
    
    a = new int**[N];
    for(i=0;i<N;i++)    
        a[i] = new  int*[2];        
    for(i=0;i<N;i++)
        for(j=0;j<2;j++)
            a[i][j]= new int[2];
    for(i=0;i<N;i++)     
        for (j=0; j<2; j++)
            for (k=0; k<2; k++)
                a[i][j][k] = 5;
    
    for(i=0;i<N;i++)
    {   cout<<"\nArray "<<i<<"\n";
        for (j=0; j<2; j++)
        {   for (k=0; k<2; k++)
                cout<<a[i][j][k]<<" ";
            cout<<"\n";
        }
    }
 
    for(i=0;i<N;i++)    
        for (j=0; j<2; j++)         
            delete [ ] a[i][j];
    for(i=0;i<N;i++) delete []a[i];
        delete []a;
    
 
    cin.sync(); cin.get();
    return 0;
}
0
Deviaphan
04.04.2011, 07:44
  #5

Не по теме:

Цитата Сообщение от almazsr Посмотреть сообщение
и используйте стринги
Холодно ещё для стрингов.)

2
мну довольно <(-__-)l
217 / 206 / 15
Регистрация: 17.01.2010
Сообщений: 2,462
04.04.2011, 16:04 6
Цитата Сообщение от IrineK Посмотреть сообщение
но техника обработки - будет та же.
не совсем. цикл по к не требуется. так как сконсоли уже массив считывается, хотя конечно можно по разном реализовывать...

Добавлено через 32 секунды

Не по теме:

Deviaphan, Почему же? разве время года властно над ними???)

0
0 / 0 / 0
Регистрация: 08.03.2011
Сообщений: 9
09.04.2011, 18:27  [ТС] 7
Цитата Сообщение от gGrn-7DA Посмотреть сообщение
C++
1
2
3
4
5
6
for(j=0; j<m; j++)
{
        mult[i][j]=new char[20];
        cout<<"s["<<j<<"]:";
        puts(mult[i][j]);
}
Замени кусок в функции Set_Mult
Все равно ошибки=(
error LNK2019: unresolved external symbol "public: __thiscall Mult::~Mult(void)" (??1Mult@@QAE@XZ) referenced in function _main
fatal error LNK1120: 1 unresolved externals

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
#include <iostream>
#include <string.h>
#include <conio.h>
#include <locale.h>
using namespace std;
#include "Mult.h"
 
Mult::Mult()
{
    ***mult=NULL;
}
 
void Mult::Set_Mult(int n)
{
    setlocale(LC_ALL, ".1251");
    int i, j, m;
    //--- Выделение памяти
    mult = new char**[n];
    for(i=0; i<n; i++)
    {
        cout<<"Введите количество элементов "<<i+1<<"-го множества: ";
        cin>>m;
        mult[i]=new char*[m];
        cout<<"Введите элементы "<<i+1<<"-го множества:\n";
        for(j=0; j<m; j++)
        {
                mult[i][j]=new char[20];
                cout<<"s["<<j<<"]:";
                gets(mult[i][j]);
        } 
 
            
    }
}
Вроде и должно работать, не понимаю, почему компилятор против.
0
100 / 100 / 15
Регистрация: 04.02.2010
Сообщений: 162
09.04.2011, 18:50 8
Цитата Сообщение от krylatka Посмотреть сообщение
***mult=NULL;
что значит эта строка в конструкторе? по видимому забыли указать тип!
C++
1
char ***mult=NULL;
VS2005 все компилится без ошибок
и еще бы в деструкторе память после себя убрать не мешало бы
0
0 / 0 / 0
Регистрация: 08.03.2011
Сообщений: 9
12.04.2011, 17:02  [ТС] 9
Да нет, у меня и с char ***mult=NULL не компилируется.
0
12 / 12 / 2
Регистрация: 10.02.2011
Сообщений: 42
12.04.2011, 17:24 10
C++
1
2
3
4
5
6
char**mult = new char*[n];
for(i=0; i < n; i++)
{
cin>>m;
mult[i] = new char[m];
}
а дальше ввод матрицы
0
0 / 0 / 0
Регистрация: 08.03.2011
Сообщений: 9
17.04.2011, 16:09  [ТС] 11
Ребята, я уже замучилась. Может хоть кто-то поделиться рабочим кодом для ввода динамического массива? n строк, m столбцов, в каждой ячейке - 20-символьная строка. Пожаааалуйста! Можно не через new, только чтобы работало.
0
100 / 100 / 15
Регистрация: 04.02.2010
Сообщений: 162
17.04.2011, 16:44 12
вот накидал чуток разбирайся
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
#include <iostream>
#include <conio.h>
#include <iomanip>
 
using namespace std;
 
void printMatr( char *** const matr, int row, int col )
{
    for ( int i = 0; i < row; i++ ) { 
        for ( int j = 0; j < col; j++ ) { 
            cout << setw( 10 ) << matr[ i ][ j ];           
        }   
        cout << endl;
    } 
    cout << endl << endl;
}
 
void setMatr( char *** matr, int row, int col )
{
    for ( int i = 0; i < row; i++ ) 
        for ( int j = 0; j < col; j++ )
            cin >> matr[ i ][ j ];  
}
 
int main()
{
    int row = 3, col = 3;
    char *** matr = new char ** [row];
    for( int i = 0; i < row; i++ ){
        matr[ i ] = new char * [ col ];
        for ( int j = 0; j < col; j++ ) { 
            matr[ i ][ j ] = new char[ 20 ];
            
        } 
    }
    setMatr( matr, row, col );
    printMatr( matr, row, col );
 
    
    for( int i = 0; i < row; i++ ){
        for ( int j = 0; j < col; j++ )
            delete [] matr[ i ][ j ];
        delete [] matr[ i ];
    }
    delete [] matr;
 
    _getch();
    return 0;
}
1
0 / 0 / 0
Регистрация: 08.03.2011
Сообщений: 9
17.04.2011, 19:58  [ТС] 13
Огромное-преогромное спасибо!!! Вы просто гений!)))
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.04.2011, 19:58
Помогаю со студенческими работами здесь

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

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

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

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


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

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

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