33 / 58 / 13
Регистрация: 26.05.2011
Сообщений: 756
1

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

30.06.2011, 22:27. Показов 4038. Ответов 24
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
помогите плиз вот код , нужно составить динамический 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))
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.06.2011, 22:27
Ответы с готовыми решениями:

Пяти мерный динамический массив
Ребят помогите сделать пяти мерный динамический массив, я просто не в курсе как это делать.

memcpy/CopyMemory + 2-мерный динамический массив
Третий день в ступоре из-за ругательства компилятора. Есть проблема: нужно скопировать данные из...

Программа при исполнении выдает ошибку и прерывается! (2-мерный динамический массив)
Помогите пожалуйста! Задали написать программку, я ее написала, и только в одном фрагменте...

Создать динамический 2-мерный массив, заполнить его случайным образом, сортировать столбцы по возрастанию их суммы
Создать динамический 2-мерный массив, заполнить его случайным образом, сортировать столбцы по...

24
Каратель
Эксперт С++
6609 / 4028 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
30.06.2011, 22:42 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;
1
33 / 58 / 13
Регистрация: 26.05.2011
Сообщений: 756
01.07.2011, 13:09  [ТС] 3
Выдает ошибки:
C++
1
2
error C3861: 'malloc': identifier not found 
error C3861: 'free': identifier not found
0
Эксперт С++
2381 / 1665 / 279
Регистрация: 29.05.2011
Сообщений: 3,399
01.07.2011, 13:17 4
C
1
#include <stdlib.h>
1
33 / 58 / 13
Регистрация: 26.05.2011
Сообщений: 756
01.07.2011, 13:27  [ТС] 5
Здесь задаеться кол. колонок и столбцов
C++
1
scanf("%d%d",&row, &col);
0
Эксперт С++
2381 / 1665 / 279
Регистрация: 29.05.2011
Сообщений: 3,399
01.07.2011, 13:28 6
Колонки и столбцы это, обычно, одно и то же
Число строк и столбцов. Да.
1
33 / 58 / 13
Регистрация: 26.05.2011
Сообщений: 756
01.07.2011, 13:33  [ТС] 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 Посмотреть сообщение
Колонки и столбцы это, обычно, одно и то же
Число строк и столбцов. Да.
Извините перепутал
0
Эксперт С++
2381 / 1665 / 279
Регистрация: 29.05.2011
Сообщений: 3,399
01.07.2011, 13:34 8
Двухмерный это. От твоего кода, кстати, не сильно отличается. Только вместо неправильно написанной функции calloc с двумя параметрами используется malloc с одним.
1
33 / 58 / 13
Регистрация: 26.05.2011
Сообщений: 756
01.07.2011, 13:43  [ТС] 9
так этот код задает 2-х мерный массив?
0
Эксперт С++
2381 / 1665 / 279
Регистрация: 29.05.2011
Сообщений: 3,399
01.07.2011, 13:45 10
Да. Его можно рассматривать и как одномерный массив указателей на массивы double, и как двухмерный массив double.
Обращение к элементу как обычно: matr[i][j]
1
33 / 58 / 13
Регистрация: 26.05.2011
Сообщений: 756
01.07.2011, 13:50  [ТС] 11
так у меня в коде только 1 цикл только по row
C++
1
for (int i = 0; i < row; i++)
Второй цикл здесь нужен? и куда его можно вставить? подскажите плиз.
0
Эксперт С++
2381 / 1665 / 279
Регистрация: 29.05.2011
Сообщений: 3,399
01.07.2011, 13:56 12
после строки
C
1
// some code
идёт освобождение выделенной памяти. Это должно быть где-нибудь в конце функции, когда массив больше не нужен.
0
33 / 58 / 13
Регистрация: 26.05.2011
Сообщений: 756
01.07.2011, 14:15  [ТС] 13
Цитата Сообщение от grizlik78 Посмотреть сообщение
Это должно быть где-нибудь в конце функции, когда массив больше не нужен.
Вставить второй цикл?
0
Эксперт С++
2381 / 1665 / 279
Регистрация: 29.05.2011
Сообщений: 3,399
01.07.2011, 14:17 14
Строки 8—14 из кода Maxwe11 во втором посте
0
33 / 58 / 13
Регистрация: 26.05.2011
Сообщений: 756
01.07.2011, 14:35  [ТС] 15
Цитата Сообщение от grizlik78 Посмотреть сообщение
во втором посте
что это значит?
0
Эксперт С++
2381 / 1665 / 279
Регистрация: 29.05.2011
Сообщений: 3,399
01.07.2011, 14:38 16
Ну подумаешь, немного форумного жаргона
Во втором сообщении, значит.
0
33 / 58 / 13
Регистрация: 26.05.2011
Сообщений: 756
01.07.2011, 14:59  [ТС] 17
C++
1
2
free(matr[i]);
    matr[i] = NULL;
это второе сообщение
C++
1
2
3
}
free(matr);
matr = NULL;
после этого вставлять цикл?

Добавлено через 4 минуты
подскажи строчку после которой необходимо вставить? и что вставить?? помоги срочняк нужно? Просто задачка нужна на экзамен , а экзамен завтра. помоги плиз
0
Эксперт С++
2381 / 1665 / 279
Регистрация: 29.05.2011
Сообщений: 3,399
01.07.2011, 15:01 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;
0
33 / 58 / 13
Регистрация: 26.05.2011
Сообщений: 756
01.07.2011, 15:21  [ТС] 19
а где цикл J?

C++
1
matr[i][j] = matr[k][m]/100500.0;
и зачем мы делим
C++
1
matr[k][m]/100500.0;
или что мы здесь делаем?
0
Эксперт С++
2381 / 1665 / 279
Регистрация: 29.05.2011
Сообщений: 3,399
01.07.2011, 15:26 20
Я телепат! я знал, я знал!
Это строка для примера использования матрицы внутри программы. Если уж на то пошло, то там не только j, но ещё и i, k, m не заданы.
Но всё что идёт до этой строчки, это создание матрицы. А всё, что после, это удаление.
А теперь объясни внятно: что хочешь сделать-то?
0
01.07.2011, 15:26
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.07.2011, 15:26
Помогаю со студенческими работами здесь

Динамический массив при наследовании, элементами которого являются объекты класса наследника динамический массив
Попробовал создать динамический массив, у которого элементы - объекты класса динамический массив,...

Динамический массив ,элементами которого являются объекты класса динамический массив
Доброго времени суток, захотел создать динамический массив ,элементами которого являются объекты...

m - мерный массив
Дано n точек m мерного пространства, каждая точка имеет массу. Найти координаты точки наиболее...

5-ти мерный массив
написал функцию Проблема в том, что содержимое массива создается локально, а мне надо глобально...


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

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

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