Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.05.2013, 20:54   #1
GHOST32
Пользователь
 
Регистрация: 03.05.2013
Сообщений: 16
По умолчанию Передача элемента матрицы функции.

Как передать элемент i-ой строки и j-го столбца функции?
GHOST32 вне форума Ответить с цитированием
Старый 21.05.2013, 20:59   #2
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Код:
f(matrix[i,j]);
Код:
f(matrix[i][j]);
Код:
f(((matrix i) j))
Ещё как-нибудь... Вы бы язык указывали, что ли.
Abstraction вне форума Ответить с цитированием
Старый 21.05.2013, 21:19   #3
GHOST32
Пользователь
 
Регистрация: 03.05.2013
Сообщений: 16
По умолчанию

Извините, забыл) Си. Ну не просто элемент передать, а как записать функцию, которой передают элемент матрицы.

void A(/*как тут должно это выглядеть?*/)
{
...
}

Последний раз редактировалось GHOST32; 21.05.2013 в 21:27.
GHOST32 вне форума Ответить с цитированием
Старый 21.05.2013, 21:28   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
f(matrix[i][j]);
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 21.05.2013, 21:56   #5
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Если матрица состоит из элементов типа int, то функция должна принимать аргумент типа int. Если из элементов типа double - то аргумент типа double. Неожиданно, правда?
Abstraction вне форума Ответить с цитированием
Старый 21.05.2013, 22:09   #6
GHOST32
Пользователь
 
Регистрация: 03.05.2013
Сообщений: 16
По умолчанию

Цитата:
Сообщение от Abstraction Посмотреть сообщение
Если матрица состоит из элементов типа int, то функция должна принимать аргумент типа int. Если из элементов типа double - то аргумент типа double. Неожиданно, правда?
Прямо-таки внезапно. Мне не понятно вот что void f(int matrix[int i][int j]) - i и j так можно вводить?
GHOST32 вне форума Ответить с цитированием
Старый 21.05.2013, 22:16   #7
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Цитата:
Прямо-таки внезапно. Мне не понятно вот что void f(int matrix[int i][int j]) - i и j так можно вводить?
Э???
Код:
void f(int); //f принимает один аргумент типа int

//...
int matrix[M][N];
f(matrix[3][8]); //Вызов
int x = matrix[4][2]; //Присваивание
f(x); //Ещё вызов
f(3); //Ещё вызов
int y = 42;
f(y); //И ещё вызов
То есть, выражение matrix[i][j] имеет тип элемента матрицы, и с ним можно обходиться как с любой переменной того же типа.
Abstraction вне форума Ответить с цитированием
Старый 21.05.2013, 22:32   #8
GHOST32
Пользователь
 
Регистрация: 03.05.2013
Сообщений: 16
По умолчанию

Мне нужно в рекурсивную функцию передать значение элемента матрицы.

Код:
void CountMass(int Arr[i][j],int n)
{
 if(Arr[i][j]==0)
 {
  n++;
  CountMass(Arr[i+1][j],n);
  CountMass(Arr[i-1][j],n);
  CountMass(Arr[i][j+1],n);
  CountMass(Arr[i][j-1],n);
 }
}
Вот для чего мне это надо. Как в данном случае правильно записать?
GHOST32 вне форума Ответить с цитированием
Старый 21.05.2013, 23:18   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
void CountMass(int **Arr, int i, int j ,int n)
{
 if(Arr[i][j]==0)
 {
  n++;
  CountMass(&Arr, i+1,j,n);
  CountMass(&Arr,i-1,j,n);
  CountMass(&Arr,i,j+1,n);
  CountMass(&Arr,i,j-1,n);
 }
}
Подойдет?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 22.05.2013, 17:46   #10
GHOST32
Пользователь
 
Регистрация: 03.05.2013
Сообщений: 16
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Код:
void CountMass(int **Arr, int i, int j ,int n)
{
 if(Arr[i][j]==0)
 {
  n++;
  CountMass(&Arr, i+1,j,n);
  CountMass(&Arr,i-1,j,n);
  CountMass(&Arr,i,j+1,n);
  CountMass(&Arr,i,j-1,n);
 }
}
Подойдет?
Ошибку выдает: cannot convert `int (*)[30][50]' to `int**' for argument `1' to `void CountMass(int**, int, int, int)'
GHOST32 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Будем называть соседями элемента с индексами ij некоторой матрицы такие элементы этой матрицы, соответ... just_dake Помощь студентам 7 28.12.2018 14:33
Язык СИ! Динамическое выделение памяти под массивы и матрицы, передача матрицы в функции Андрей! Общие вопросы C/C++ 33 31.01.2012 22:07
Передача функции другой функции как аргумента C # stopanko C# (си шарп) 2 20.11.2011 13:13
Передача двумерного массива аля матрицы из функции bondik Общие вопросы C/C++ 1 20.05.2009 15:46
Передача элемента формы varied Общие вопросы Delphi 10 21.12.2006 23:45