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

Динамика, динамика и снова динамика - C++

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 17, средняя оценка - 4.65
gr_8_zizu
13 / 8 / 2
Регистрация: 07.01.2011
Сообщений: 149
28.07.2011, 11:15     Динамика, динамика и снова динамика #1
Вот как сделать например, что бы динамический массив например
C++
1
2
3
4
int **pArray = new int*[rows];
 
for(int i = 0; i < rows; i++)
  pArray[i] = new int[cols];
Объявлялся еще в одном for-е и на каждой последующей итерации новое имя массива было такое(i=1 pArray1, i=2 pArray2 ... и т.д.)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ValeryLaptev
Эксперт С++
1013 / 792 / 46
Регистрация: 30.04.2011
Сообщений: 1,601
28.07.2011, 11:20     Динамика, динамика и снова динамика #2
Цитата Сообщение от gr_8_zizu Посмотреть сообщение
Вот как сделать например, что бы динамический массив например
C++
1
2
3
4
int **pArray = new int*[rows];
 
for(int i = 0; i < rows; i++)
  pArray[i] = new int[cols];
Объявлялся еще в одном for-е и на каждой последующей итерации новое имя массива было такое(i=1 pArray1, i=2 pArray2 ... и т.д.)
Может быть шаблоны?
А вообще-то в С++ нельзя динамически формировать имя переменной.
Если только на этапе компиляции. Но тут вы получите столько циклов, сколько раз сгенерите имя - для каждого имени - отдельный цикл.

Почему нельзя сделать массив массивов?
LosAngeles
Заблокирован
28.07.2011, 11:22     Динамика, динамика и снова динамика #3
подозреваю что тебе нужно нечто такое
C++
1
2
3
4
5
6
void myAlloc(int **pArray)
{
    int **pArray = new int*[rows];
 
    for(int i = 0; i < rows; i++)
        pArray[i] = new int[cols];
}
а вкоде вызывать
C++
1
2
3
4
int **pArray1;
int **pArray2;
MyAlloc(pArray1);
MyAlloc(pArray2);
в таком случае парную функцию не забудь приделать
-=ЮрА=-
Заблокирован
Автор FAQ
28.07.2011, 11:41     Динамика, динамика и снова динамика #4
Сделай массив 3-х мерным, тогда каждый элемент 1-го измерения будет отдельным 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
#include <stdio.h>
#include <conio.h>
 
int main()
{
    printf("Enter num of arrays :");
    int nArr;scanf("%d",&nArr);
    int ***pArray = new int **[nArr];
    printf("Enter rows of Array :");
    int rows;scanf("%d",&rows);
    printf("Enter cols of Array :");
    int cols;scanf("%d",&cols);
 
    
    for(int i = 0,j,k; i < nArr; i++)
    {
        printf("\tpArray%d\r\n",i);
        pArray[i] = new int *[rows];
        for(j = 0; j < cols; j++)
        {
            pArray[i][j] = new int[cols];
            for(k = 0; k < cols; k++)
            {
                pArray[i][j][k] = i + j + k;
                printf("%d ",pArray[i][j][k]);
            }
            printf("\r\n");
        }
        printf("\r\n");
    }
    printf("Press any key to continue\r\n");
    getch();
    return 0;
}
Миниатюры
Динамика, динамика и снова динамика  
Mayonez
 Аватар для Mayonez
379 / 271 / 20
Регистрация: 26.12.2009
Сообщений: 875
28.07.2011, 12:12     Динамика, динамика и снова динамика #5
Цитата Сообщение от ValeryLaptev Посмотреть сообщение
Почему нельзя сделать массив массивов?
Это и есть массив массивов
ValeryLaptev
Эксперт С++
1013 / 792 / 46
Регистрация: 30.04.2011
Сообщений: 1,601
28.07.2011, 13:43     Динамика, динамика и снова динамика #6
Цитата Сообщение от Mayonez Посмотреть сообщение
Это и есть массив массивов
Добавьте еще одно слово "массивов"...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.07.2011, 19:39     Динамика, динамика и снова динамика
Еще ссылки по теме:

C++ и снова С++
C++ Уменьшение числа(динамика)
Динамика и статика (массивы) C++
C++ Как сделать чтобы таймер дойдя до 0 стартовал снова и снова?
C++ Динамика в двумерном массиве

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

Или воспользуйтесь поиском по форуму:
gr_8_zizu
13 / 8 / 2
Регистрация: 07.01.2011
Сообщений: 149
28.07.2011, 19:39  [ТС]     Динамика, динамика и снова динамика #7
Цитата Сообщение от LosAngeles Посмотреть сообщение
подозреваю что тебе нужно нечто такое
C++
1
2
3
4
5
6
void myAlloc(int **pArray)
{
    int **pArray = new int*[rows];
 
    for(int i = 0; i < rows; i++)
        pArray[i] = new int[cols];
}
а вкоде вызывать
C++
1
2
3
4
int **pArray1;
int **pArray2;
MyAlloc(pArray1);
MyAlloc(pArray2);
в таком случае парную функцию не забудь приделать
Какую функцию куда приделать?
Yandex
Объявления
28.07.2011, 19:39     Динамика, динамика и снова динамика
Ответ Создать тему
Опции темы

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