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

динамический 2-х мерный массив - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 19, средняя оценка - 4.79
shilovec5377
 Аватар для shilovec5377
28 / 53 / 1
Регистрация: 26.05.2011
Сообщений: 752
30.06.2011, 22:27     динамический 2-х мерный массив #1
помогите плиз вот код , нужно составить динамический 2-х мерный массив
C++
1
2
3
4
5
6
double **a
int n,m,l;
scanf("%d%d",&n,&m);
a=(double **) colloc (m,sizeof(double*));
for (i=0;i<m;i++)
a[i]=(double *) colloc(n,sizeof (double))
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jupiter
Каратель
Эксперт C++
6543 / 3963 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
30.06.2011, 22:42     динамический 2-х мерный массив #2
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
//именуйте переменные осмысленно и делайте отступы межлу операторами
int row, col;
scanf("%d%d",&row, &col);
double** matr = (double**) malloc(row * sizeof(double*));
for (int i = 0; i < row; i++)
    matr[i]=(double*) malloc(col * sizeof(double));
//some code
for (int i = 0; i < row; i++)
{
    free(matr[i]);
    matr[i] = NULL;
}
free(matr);
matr = NULL;
shilovec5377
 Аватар для shilovec5377
28 / 53 / 1
Регистрация: 26.05.2011
Сообщений: 752
01.07.2011, 13:09  [ТС]     динамический 2-х мерный массив #3
Выдает ошибки:
C++
1
2
error C3861: 'malloc': identifier not found 
error C3861: 'free': identifier not found
grizlik78
Эксперт С++
 Аватар для grizlik78
1882 / 1414 / 101
Регистрация: 29.05.2011
Сообщений: 2,959
01.07.2011, 13:17     динамический 2-х мерный массив #4
C
1
#include <stdlib.h>
shilovec5377
 Аватар для shilovec5377
28 / 53 / 1
Регистрация: 26.05.2011
Сообщений: 752
01.07.2011, 13:27  [ТС]     динамический 2-х мерный массив #5
Здесь задаеться кол. колонок и столбцов
C++
1
scanf("%d%d",&row, &col);
grizlik78
Эксперт С++
 Аватар для grizlik78
1882 / 1414 / 101
Регистрация: 29.05.2011
Сообщений: 2,959
01.07.2011, 13:28     динамический 2-х мерный массив #6
Колонки и столбцы это, обычно, одно и то же
Число строк и столбцов. Да.
shilovec5377
 Аватар для shilovec5377
28 / 53 / 1
Регистрация: 26.05.2011
Сообщений: 752
01.07.2011, 13:33  [ТС]     динамический 2-х мерный массив #7
Вот этот код задает же отномерный массив?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
int row, col;
scanf("%d%d",&row, &col);
double** matr = (double**) malloc(row * sizeof(double*));
for (int i = 0; i < row; i++)
    matr[i]=(double*) malloc(col * sizeof(double));
 
for (int i = 0; i < row; i++)
{
    free(matr[i]);
    matr[i] = NULL;
}
free(matr);
matr = NULL;
Подскажите плиз как сделать 2-х мерный

Добавлено через 1 минуту
Цитата Сообщение от grizlik78 Посмотреть сообщение
Колонки и столбцы это, обычно, одно и то же
Число строк и столбцов. Да.
Извините перепутал
grizlik78
Эксперт С++
 Аватар для grizlik78
1882 / 1414 / 101
Регистрация: 29.05.2011
Сообщений: 2,959
01.07.2011, 13:34     динамический 2-х мерный массив #8
Двухмерный это. От твоего кода, кстати, не сильно отличается. Только вместо неправильно написанной функции calloc с двумя параметрами используется malloc с одним.
shilovec5377
 Аватар для shilovec5377
28 / 53 / 1
Регистрация: 26.05.2011
Сообщений: 752
01.07.2011, 13:43  [ТС]     динамический 2-х мерный массив #9
так этот код задает 2-х мерный массив?
grizlik78
Эксперт С++
 Аватар для grizlik78
1882 / 1414 / 101
Регистрация: 29.05.2011
Сообщений: 2,959
01.07.2011, 13:45     динамический 2-х мерный массив #10
Да. Его можно рассматривать и как одномерный массив указателей на массивы double, и как двухмерный массив double.
Обращение к элементу как обычно: matr[i][j]
shilovec5377
 Аватар для shilovec5377
28 / 53 / 1
Регистрация: 26.05.2011
Сообщений: 752
01.07.2011, 13:50  [ТС]     динамический 2-х мерный массив #11
так у меня в коде только 1 цикл только по row
C++
1
for (int i = 0; i < row; i++)
Второй цикл здесь нужен? и куда его можно вставить? подскажите плиз.
grizlik78
Эксперт С++
 Аватар для grizlik78
1882 / 1414 / 101
Регистрация: 29.05.2011
Сообщений: 2,959
01.07.2011, 13:56     динамический 2-х мерный массив #12
после строки
C
1
// some code
идёт освобождение выделенной памяти. Это должно быть где-нибудь в конце функции, когда массив больше не нужен.
shilovec5377
 Аватар для shilovec5377
28 / 53 / 1
Регистрация: 26.05.2011
Сообщений: 752
01.07.2011, 14:15  [ТС]     динамический 2-х мерный массив #13
Цитата Сообщение от grizlik78 Посмотреть сообщение
Это должно быть где-нибудь в конце функции, когда массив больше не нужен.
Вставить второй цикл?
grizlik78
Эксперт С++
 Аватар для grizlik78
1882 / 1414 / 101
Регистрация: 29.05.2011
Сообщений: 2,959
01.07.2011, 14:17     динамический 2-х мерный массив #14
Строки 8—14 из кода Maxwe11 во втором посте
shilovec5377
 Аватар для shilovec5377
28 / 53 / 1
Регистрация: 26.05.2011
Сообщений: 752
01.07.2011, 14:35  [ТС]     динамический 2-х мерный массив #15
Цитата Сообщение от grizlik78 Посмотреть сообщение
во втором посте
что это значит?
grizlik78
Эксперт С++
 Аватар для grizlik78
1882 / 1414 / 101
Регистрация: 29.05.2011
Сообщений: 2,959
01.07.2011, 14:38     динамический 2-х мерный массив #16
Ну подумаешь, немного форумного жаргона
Во втором сообщении, значит.
shilovec5377
 Аватар для shilovec5377
28 / 53 / 1
Регистрация: 26.05.2011
Сообщений: 752
01.07.2011, 14:59  [ТС]     динамический 2-х мерный массив #17
C++
1
2
free(matr[i]);
    matr[i] = NULL;
это второе сообщение
C++
1
2
3
}
free(matr);
matr = NULL;
после этого вставлять цикл?

Добавлено через 4 минуты
подскажи строчку после которой необходимо вставить? и что вставить?? помоги срочняк нужно? Просто задачка нужна на экзамен , а экзамен завтра. помоги плиз
grizlik78
Эксперт С++
 Аватар для grizlik78
1882 / 1414 / 101
Регистрация: 29.05.2011
Сообщений: 2,959
01.07.2011, 15:01     динамический 2-х мерный массив #18
Может я не по-русски разговариваю?
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
int row, col;
scanf("%d%d",&row, &col);
double** matr = (double**) malloc(row * sizeof(double*));
for (int i = 0; i < row; i++)
    matr[i]=(double*) malloc(col * sizeof(double));
// здесь полезный код, который работает с матрицей
// здесь тоже работа с матрицей
matr[i][j] = matr[k][m]/100500.0; // и это
// и здесь тоже работаем с матрицей
// ...
// а здесь нам работать надоело и матрица не нужна. далее идёт код удаления матрицы
for (int i = 0; i < row; i++)
{
    free(matr[i]); // удаляем i-ю строку
    matr[i] = NULL;
}
free(matr); // удаляем массив указателей
matr = NULL;
shilovec5377
 Аватар для shilovec5377
28 / 53 / 1
Регистрация: 26.05.2011
Сообщений: 752
01.07.2011, 15:21  [ТС]     динамический 2-х мерный массив #19
а где цикл J?

C++
1
matr[i][j] = matr[k][m]/100500.0;
и зачем мы делим
C++
1
matr[k][m]/100500.0;
или что мы здесь делаем?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.07.2011, 15:26     динамический 2-х мерный массив
Еще ссылки по теме:

Программа при исполнении выдает ошибку и прерывается! (2-мерный динамический массив) C++
C++ Пяти мерный динамический массив
C++ m - мерный массив

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

Или воспользуйтесь поиском по форуму:
grizlik78
Эксперт С++
 Аватар для grizlik78
1882 / 1414 / 101
Регистрация: 29.05.2011
Сообщений: 2,959
01.07.2011, 15:26     динамический 2-х мерный массив #20
Я телепат! я знал, я знал!
Это строка для примера использования матрицы внутри программы. Если уж на то пошло, то там не только j, но ещё и i, k, m не заданы.
Но всё что идёт до этой строчки, это создание матрицы. А всё, что после, это удаление.
А теперь объясни внятно: что хочешь сделать-то?
Yandex
Объявления
01.07.2011, 15:26     динамический 2-х мерный массив
Ответ Создать тему
Опции темы

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