Автор Тема: Нужна помощь по сям  (Прочитано 4186 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн virf

  • Пользователь
  • Сообщений: 241
    • Просмотр профиля
Нужна помощь по сям
« : 22 Апрель 2006, 21:39:51 »
Нужно замутить передачу двумерного массива через параметр функции на C++.

Оффлайн .flint

  • Пользователь
  • Сообщений: 843
  • Пол: Мужской
    • Просмотр профиля
Нужна помощь по сям
« Ответ #1 : 23 Апрель 2006, 09:13:22 »
Так двумерные массивы в C++ -- суть указатели. Т.е, есть у тебя двумерный массив, скажем, array[][] из данных типа double. И есть функция function, в которую ты его и передаешь. Тогда, помня, что массивы и указатели в C++ мало чем отличаются, смотри, как это делается:

void function(double ** array)


Все, готово.

Оффлайн virf

  • Пользователь
  • Сообщений: 241
    • Просмотр профиля
Нужна помощь по сям
« Ответ #2 : 23 Апрель 2006, 10:38:51 »
ошибку вроде не даёт в объявлении. не пойму только как её теперь вызвать.


float det(float **p, int n)
{
..if(n==1) return **p;
..float det=0;
..for(int i=0; int m=n>i; i++) {
....float **add = new float*[n-1];
....for(int i=0; i = new float[n-1];
....for(int y=1; y......for(int x=0; x<-1; x++) {
........if(x==i) continue;
........if(x
  • [y-1] = p[y]
  • ;

  • ........else add[x-1][y-1] = p[y]
    • ;

    ......}
    ....}
    ....if(i%2) p[0] = -p[0];
    ....det += p[0]*det(add[][], n-1);
    ..}
    ..return det;
    }
    « Последнее редактирование: 23 Апрель 2006, 10:58:00 от virf »

    Оффлайн Romasik (RS)

    • Пользователь
    • Сообщений: 218
      • Просмотр профиля
    Нужна помощь по сям
    « Ответ #3 : 23 Апрель 2006, 12:42:17 »
    Во-первых, лучше в арифметических операциях юзать double, а не float. У второго есть свои глюки в некоторых реализациях.
    Во-вторых, не det(add[][],n-1), а det(add,n-1), т.к. add у тебя и есть указатель.
    ЗЫ: код не читал :)
    ЗЫ2: при рекурсии удобно использовать статические переменные, чтобы они не переобъявлялись (статическая переменная - одна для всего исполняемого блока, объявляется как static <тип> <идентификатор>)

    Оффлайн virf

    • Пользователь
    • Сообщений: 241
      • Просмотр профиля
    Нужна помощь по сям
    « Ответ #4 : 23 Апрель 2006, 13:16:47 »
    det += p[0]*det(add, n-1)|;

    [C++ Error] Unit1.cpp(24): E2314 Call of nonfunction