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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 17, средняя оценка - 4.76
krylatka
0 / 0 / 0
Регистрация: 08.03.2011
Сообщений: 9
#1

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

03.04.2011, 21:48. Просмотров 2173. Ответов 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;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.04.2011, 21:48     Трехмерный динамический массив типа char
Посмотрите здесь:

двумерный динамический массив типа char - C++
#include &lt;iostream&gt; #include &lt;iomanip&gt; #include &lt;windows.h&gt; using namespace std; void RussianMessage(const char *str) { ...

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

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

Трехмерный массив char - C++
здравствуйте, вопрос такой: есть массив например char Aэлементов есть функция которая обращается к одному из элементов этого...

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

Как вывести трехмерный динамический массив - C++
народ можете подсказать) написал код, где заполняется трехмерный массив так как мне необходимо, но при его выводе часть массива, вместо...

Создать динамический трехмерный массив и функцию ввода его элементов - C++
с клавиатуры вводится размер трехмерного массива. Необходимо выделить под него память и с клавиатуры ввести значения элементов массива....

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
gGrn-7DA
мну довольно <(-__-)l
203 / 192 / 1
Регистрация: 17.01.2010
Сообщений: 2,392
Завершенные тесты: 1
03.04.2011, 21:52     Трехмерный динамический массив типа char #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
almazsr
232 / 169 / 7
Регистрация: 13.11.2010
Сообщений: 425
03.04.2011, 22:13     Трехмерный динамический массив типа char #3
Если подключаете
C++
1
#include <string.h>
- так и используйте стринги.
IrineK
Заблокирован
04.04.2011, 01:08     Трехмерный динамический массив типа char #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;
}
Deviaphan
04.04.2011, 07:44
  #5

Не по теме:

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

gGrn-7DA
мну довольно <(-__-)l
203 / 192 / 1
Регистрация: 17.01.2010
Сообщений: 2,392
Завершенные тесты: 1
04.04.2011, 16:04     Трехмерный динамический массив типа char #6
Цитата Сообщение от IrineK Посмотреть сообщение
но техника обработки - будет та же.
не совсем. цикл по к не требуется. так как сконсоли уже массив считывается, хотя конечно можно по разном реализовывать...

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

Не по теме:

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

krylatka
0 / 0 / 0
Регистрация: 08.03.2011
Сообщений: 9
09.04.2011, 18:27  [ТС]     Трехмерный динамический массив типа char #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]);
        } 
 
            
    }
}
Вроде и должно работать, не понимаю, почему компилятор против.
vitaska
84 / 84 / 2
Регистрация: 04.02.2010
Сообщений: 162
09.04.2011, 18:50     Трехмерный динамический массив типа char #8
Цитата Сообщение от krylatka Посмотреть сообщение
***mult=NULL;
что значит эта строка в конструкторе? по видимому забыли указать тип!
C++
1
char ***mult=NULL;
VS2005 все компилится без ошибок
и еще бы в деструкторе память после себя убрать не мешало бы
krylatka
0 / 0 / 0
Регистрация: 08.03.2011
Сообщений: 9
12.04.2011, 17:02  [ТС]     Трехмерный динамический массив типа char #9
Да нет, у меня и с char ***mult=NULL не компилируется.
sandora
12 / 12 / 0
Регистрация: 10.02.2011
Сообщений: 42
12.04.2011, 17:24     Трехмерный динамический массив типа char #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];
}
а дальше ввод матрицы
krylatka
0 / 0 / 0
Регистрация: 08.03.2011
Сообщений: 9
17.04.2011, 16:09  [ТС]     Трехмерный динамический массив типа char #11
Ребята, я уже замучилась. Может хоть кто-то поделиться рабочим кодом для ввода динамического массива? n строк, m столбцов, в каждой ячейке - 20-символьная строка. Пожаааалуйста! Можно не через new, только чтобы работало.
vitaska
84 / 84 / 2
Регистрация: 04.02.2010
Сообщений: 162
17.04.2011, 16:44     Трехмерный динамический массив типа char #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;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.04.2011, 19:58     Трехмерный динамический массив типа char
Еще ссылки по теме:

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

Динамический массив из char - C++
Скриншот с ошибкой int _tmain(int argc, _TCHAR* argv) { setlocale(LC_ALL, &quot;Russian&quot;); char * alphabet; int index =...

Динамический двумерный массив char через new? - C++
В общем, нужно создать n-ое количество двухсимвольных строк char. Как правильно выделить память под него, используя new? Просто, следуя...

Как переделать динамический массив int в char? - C++
Как переделать динамический массив int в char? #include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;cstdio&gt; #include &lt;iomanip&gt; ...

Создать класс с 1 полем: динамический массив char - C++
Необходимо создать класс с 1 полем: динамический массив char. С конструктором, куда передавать динамический массив char. В main создать...


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

Или воспользуйтесь поиском по форуму:
krylatka
0 / 0 / 0
Регистрация: 08.03.2011
Сообщений: 9
17.04.2011, 19:58  [ТС]     Трехмерный динамический массив типа char #13
Огромное-преогромное спасибо!!! Вы просто гений!)))
Yandex
Объявления
17.04.2011, 19:58     Трехмерный динамический массив типа char
Ответ Создать тему
Опции темы

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