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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.02.2011, 22:44   #1
tem_80
Пользователь
 
Регистрация: 24.01.2011
Сообщений: 15
По умолчанию Передача двухмерного массива в функцию

подскажите,как можно передать двухмерный массив в функцию.С одномерными всё понятно, а вот с двухмерными засада.
Код:
void ent_matrix(double *,int,int);
main()
{
	
	double matrix[3][4];
	ent_matrix(matrix,3,4);
	
}
void ent_matrix(double *ptr,int n,int m)
{
	цикл по строкам
           цикл по столбцам

}
так естественно ничего не получается...

Последний раз редактировалось Stilet; 19.02.2011 в 08:50.
tem_80 вне форума Ответить с цитированием
Старый 18.02.2011, 23:07   #2
wm_leviathan
Форумчанин
 
Аватар для wm_leviathan
 
Регистрация: 17.02.2010
Сообщений: 399
По умолчанию

Код:
void ent_matrix(double *ptr,int row,int col);
main()
{

double matrix[3][4];
ent_matrix(&matrix[0][0],3,4);

}
void ent_matrix(double *ptr,int n,int m)
{
цикл по строкам
цикл по столбцам

}

Последний раз редактировалось wm_leviathan; 18.02.2011 в 23:10.
wm_leviathan вне форума Ответить с цитированием
Старый 18.02.2011, 23:11   #3
Д_М
Пользователь
 
Регистрация: 02.02.2011
Сообщений: 92
По умолчанию

Код:
#include <stdio.h>

// Способ номер раз - функция работает с матрицами
// только одного фиксированного размера
void f1(int arr[3][4])
{
   for(int i=0; i<3; ++i)
     for(int j=0; j<4; ++j)
       arr[i][j] = 100 + i*10 + j;
}

// Способ номер 2
// Число столбцов фиксировано
// число строк передается параметром
void f2(int arr[][4], int nRows)
{
   for(int i=0; i<nRows; ++i)
     for(int j=0; j<4; ++j)
       arr[i][j] = 200 + i*10 + j;
}

// Способ номер 3 -число строк и столбцов передается параметрами.
// Здесь компилятор не может сам разобраться с арифметикой индексов.
// Сделаем это сами
void f3(int* arr, int nRows, int nCols)
{
   for(int i=0; i<nRows; ++i)
     for(int j=0; j<nCols; ++j)
       arr[i * nCols + j] = 300 + i*10 + j;
}

int main()
{
  int matrix[3][4];

  f1(matrix);
  for(int i=0; i<3; ++i) {
    for(int j=0; j<4; ++j)
      printf(" %d", matrix[i][j]);
    printf("\n");
  }

  f2(matrix, 3);
  for(int i=0; i<3; ++i) {
    for(int j=0; j<4; ++j)
      printf(" %d", matrix[i][j]);
    printf("\n");
  }

  f3((int*)matrix, 3, 4);
  for(int i=0; i<3; ++i) {
    for(int j=0; j<4; ++j)
      printf(" %d", matrix[i][j]);
    printf("\n");
  }
Д_М вне форума Ответить с цитированием
Старый 18.02.2011, 23:47   #4
tem_80
Пользователь
 
Регистрация: 24.01.2011
Сообщений: 15
По умолчанию

всем большое спасибо за помощь!
tem_80 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Передача массива в функцию GladiatoR24 Общие вопросы C/C++ 3 24.11.2010 22:51
Передача массива в функцию D[I]K Общие вопросы C/C++ 4 13.09.2009 21:31
передача массива в функцию JOFRIF Общие вопросы C/C++ 8 02.08.2009 12:46
Передача массива в функцию Vistar Общие вопросы C/C++ 1 27.04.2009 08:08
Передача двухмерного массива в функцию IgorKr Общие вопросы C/C++ 2 28.03.2008 01:11