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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 52, средняя оценка - 4.79
MsDos
Сообщений: n/a
#1

Передача динамического двумерного массива через параметры - C++

01.05.2008, 12:04. Просмотров 6463. Ответов 8
Метки нет (Все метки)

в такой вот простенькой программке:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include ..
const n = 4;
 
void ENTR(double pMas[n][n], char *file)
{
 ifstream SMas(file);
 for (k; k < n; k++) { for (t; t < n; t++) { SMas>>pMas[k][t];} }
 SMas.close();
}
 
 
void main ()
{
 clrscr(); 
 char *FA = "A.TXT";
 double *A = (double *) calloc(n, n);
 
 ENTR(A, FA);
 
 FREE(A);
 getch();
}
на строчку вызова: ' double *A = (double *) calloc(n, n);'
выдается ошибка: 'cannot convert 'double *' to 'double[4] *''

не понимаю, что не нравится компилятору, и как это исправлять
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.05.2008, 12:04     Передача динамического двумерного массива через параметры
Посмотрите здесь:

Передача динамического двумерного массива в функцию - C++
Я сделал вот так: void PrintMatrix(int** matrix, int&amp; n, int&amp; m) { for (int i = 0; i &lt; n; i++) { cout &lt;&lt; &quot;Row &quot; &lt;&lt; (i...

Передача динамического двумерного массива в процедуру - C++
Написал вот такой код для одномерного динамического массива #include &lt;iostream&gt; #include &lt;clocale&gt; using namespace std; ...

Передача по ссылке двумерного динамического массива в функцию - C++
Приведите, пожалуйста, пример. Нигде не могу найти.

Передача двумерного динамического массива в функцию(объяснение) - C++
Когда мы хотим передать двумерный динамический массив в функцию через указатели (**a) , то в теле ф-ии main() , мы пишем так , как указано...

Передача двумерного динамического массива чисел в функцию - C++
void Map::setCell(int** block, Room* room, int type){ for(int i=room-&gt;x; i&lt;room-&gt;w; ++i) for(int j=room-&gt;y; j&lt;room-&gt;h; ++j) ...

Передача двумерного динамического массива в функцию построчно и сортировка - C++
Всем доброго времени суток! Собственно сабж: есть двумерный динамический массив, который надо делить на одномерные и передавать в функцию...

Передача двумерного динамического массива в функцию в качестве параметра - C++
Вообщем надо сложить и умножить две матрицы, но сделать это в отдельных функциях. Матрицы заданы динамическими массивами размерами n*m и...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MsDos
Сообщений: n/a
01.05.2008, 15:35     Передача динамического двумерного массива через параметры #2
хым, так что делать-то? (
Somebody
2786 / 1600 / 145
Регистрация: 03.12.2007
Сообщений: 4,189
Завершенные тесты: 1
02.05.2008, 23:08     Передача динамического двумерного массива через параметры #3
Вроде так можно
Код
void ENTR(double (*pMas)[n][n], char *file)
Код
double (*A)[n][n] = (double(*)[n][n]) calloc(n*n,sizeof(double));
dioxidin
130 / 97 / 1
Регистрация: 21.11.2007
Сообщений: 544
06.05.2008, 11:26     Передача динамического двумерного массива через параметры #4
А я бы в функцию передавал указатели и размеры:
C++
1
2
3
4
void ENTR(double **pMas,int Rows, int Cols,...)
{
...
}
Мне тут же на форуме помогли с созданием матричного класса. Вот конструктор:
C++
1
2
3
4
5
6
7
8
9
10
11
__fastcall TMatrix::TMatrix(int Rows, int Cols)
{
    //
    csM = new TCriticalSection();
    R = Rows, C = Cols;
    M = (float**) calloc(R, sizeof(float));
    for(int i = 0; i < R; i++){
      M[i] = (float*) calloc(C, sizeof(float));
      for(int j = 0; j < C; j++) M[i][j] = 0;
    }
}
и ссылка на топик.
Читай.. Прям твоя тема Поис рулит
MsDos
Сообщений: n/a
10.05.2008, 17:25     Передача динамического двумерного массива через параметры #5
оо, пасипки
правда, уже брат помог: говорит, надо через ** создавать вообще такой массив
MsDos
Сообщений: n/a
12.05.2008, 18:38     Передача динамического двумерного массива через параметры #6
что-то calloc статически работает (
а как именно через динамический массив теперь это сделать?
MsDos
Сообщений: n/a
13.05.2008, 20:46     Передача динамического двумерного массива через параметры #7
ура, все заработало, если интересно, написала так
при вызове:
C++
1
2
 double **A = new double *[n];
 for (k=0; k<n; k++)  A[k] = new double [n];
при передаче:
C++
1
 void CORD1(double *(*pMas), int n, char *file)
dioxidin
130 / 97 / 1
Регистрация: 21.11.2007
Сообщений: 544
14.05.2008, 14:23     Передача динамического двумерного массива через параметры #8
Ну это все равно сложновато писать....
Есть в С++ реализация динамических массивов, только в хелпах на них в BDS2006 трудно инфу найтить. Да и реализован класс,если не ошибаюсь, так как я описал. Все динамические массивы через "кучу" делаются и выделение памяти налету. Так что надо всего лишь описать класс в котором будут храниться размеры массива и сами его данные => тогда в качестве параметра просто указываешь имя переменной и все.

А про это:
Цитата Сообщение от MsDos
double **A = new double *[n];
Мне кажется что тут не хватает выделения памяти в соответствии со вторым индексом массива. По-моему - ошибка.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.05.2008, 09:50     Передача динамического двумерного массива через параметры
Еще ссылки по теме:

Передача элементов двумерного массива в параметры функции - C++
Подскажите. Есть к примеру матрица int mat4; и ее нужно передать в параметры функции. Как это сделать?)

Вывод динамического двумерного массива через функцию - C++
Имею следующий код: void matrix_output (int **matrix, int N) { for (int i=0; i&lt;N; i++) { for...

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

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

Передача двумерного массива в функцию через указатели - C++
поставлена такая задача - Реализовать функцию перемножения двумерных матриц bool Multi-plyMatrices(int** matrixA, int aRows, int aCols,...


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

Или воспользуйтесь поиском по форуму:
MsDos
5 / 5 / 1
Регистрация: 13.05.2008
Сообщений: 91
15.05.2008, 09:50     Передача динамического двумерного массива через параметры #9
следующий цикл довыделяет память, все нормально:
Цитата Сообщение от MsDos
double **A = new double *[n];
for (k=0; k<n; k++) A[k] = new double [n];
программа простенькая (искать решение СЛАУ) => присабачивать классы - перегруженная роскошь

Добавлено через 13 минут
я сижу в среде Borland C++ for DOS доисторического происхождения (порядка 2000г), вряд ли там содержится требуемый хелп >_<
Yandex
Объявления
15.05.2008, 09:50     Передача динамического двумерного массива через параметры
Ответ Создать тему
Опции темы

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