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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 221, средняя оценка - 4.84
ghgfh
2 / 2 / 0
Регистрация: 30.05.2009
Сообщений: 22
#1

Как в функцию передать параметр - двухмерный массив - C++

02.06.2009, 08:41. Просмотров 29397. Ответов 16
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
9
10
11
void max_el[B]()
{
 int i,j,max;
 for ( i=1 ; i<=n; i++)
 for ( j=1; j<=m; j++)                          //nahodim maksimalnii element
 if (max<a[i][j]) { max=a[i][j]; max_str=i; };
 
 printf("Max element = %3d in Str %2d \n \n",max,max_str);
 
 for ( j=1 ; j<=m; j++) printf("%3d ",a[max_str][j]);
};
Пожалуйста, напишите, как в функцию правильно вписать параметр двумерный массив.
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.06.2009, 08:41     Как в функцию передать параметр - двухмерный массив
Посмотрите здесь:
Как передать двухмерный массив в функцию? C++
как передать в функцию двухмерный динамический массив по ссылке C++
Передать двухмерный массив в функцию C++
C++ Передать в функцию динамический двухмерный массив с динамическими размерами
В разработанную пользовательскую функцию параметр-массив передать двумя способами: C++
C++ Передать функцию как параметр
C++ Как передать параметр в функцию?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Patch
2276 / 491 / 11
Регистрация: 01.04.2009
Сообщений: 2,178
02.06.2009, 09:03     Как в функцию передать параметр - двухмерный массив #2
целиком все массивы передавать - тебе стека не хватит.
передавай ссылку.
AltPeople
10 / 10 / 1
Регистрация: 25.09.2008
Сообщений: 73
02.06.2009, 10:28     Как в функцию передать параметр - двухмерный массив #3
Сообщение было отмечено автором темы, экспертом или модератором как ответ
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
...
const int i=10;
const int j=10;
int array[j][i]={0};
...
max_el(array);
...
 
void max_el(int a[j][i])//к примеру матрица 10х10, 
{
int i,j,max=0;//лучше max присвоить начальное значение 0!
for ( i=1 ; i<=n; i++)
for ( j=1; j<=m; j++) //nahodim maksimalnii element
if (max<a[i][j]) { max=a[i][j]; max_str=i; };
 
printf("Max element = %3d in Str %2d \n \n",max,max_str);
 
for ( j=1 ; j<=m; j++) printf("%3d ",a[max_str][j]);
};
таким образом можно...
Marinich
9 / 9 / 4
Регистрация: 22.05.2009
Сообщений: 54
02.06.2009, 10:53     Как в функцию передать параметр - двухмерный массив #4
Так не получится.

Все проще:
C++
1
2
3
4
5
6
7
8
9
10
11
12
void max_el(int *a) {
   int i, j, max = 0;
   for (i = 1; i <= n; i++)
      for (j = 1; j <= m; j ++) //nahodim maksimalnii element
         if (max < a[i][j]) {
            max = a[i][j];
            max_str = i;
         }
   printf("Max element = %3d in Str %2d \n \n",max,max_str);
   for ( j = 1 ; j <= m; j ++) 
      printf("%3d ", a[max_str][j]);
}
В main() пишем следущее:
C++
1
2
3
4
5
int main() {
   int a[10][10];
   max_el(a);
   return 0;
}
PS: И кто такой хороший научил тебя ставить ";" после фигурных скобок?
Patch
2276 / 491 / 11
Регистрация: 01.04.2009
Сообщений: 2,178
02.06.2009, 11:05     Как в функцию передать параметр - двухмерный массив #5
так получится ???
Цитата Сообщение от Marinich Посмотреть сообщение
C
1
2
3
4
5
6
7
8
9
10
11
12
void max_el(int *a) {
   int i, j, max = 0;
   for (i = 1; i <= n; i++)
      for (j = 1; j <= m; j ++) //nahodim maksimalnii element
         if (max < a[i][j]) {
            max = a[i][j];
            max_str = i;
         }
   printf("Max element = %3d in Str %2d \n \n",max,max_str);
   for ( j = 1 ; j <= m; j ++) 
      printf("%3d ", a[max_str][j]);
}
может я чего не знаю, но обращение a[i][j] работать не может. ты-же ссылку передал.
void max_el(int *a)
размерность массива в функции не указана.
AltPeople
10 / 10 / 1
Регистрация: 25.09.2008
Сообщений: 73
02.06.2009, 12:41     Как в функцию передать параметр - двухмерный массив #6
2 Marinich :
и с чего ты взял что так void max_el(int a[10][10]), или void max_el(int a[][10], int i), где i передается в функцию и i=10 - не получится?????
объясни...
подобные задачи я решал таким образом, а с указателями Patch прав, полечение эл-та массива происходит через смещение указателя
Marinich
9 / 9 / 4
Регистрация: 22.05.2009
Сообщений: 54
03.06.2009, 10:06     Как в функцию передать параметр - двухмерный массив #7
Да, ступил. Бывает.

В своем коде сделал 2 ошибки:
1) В первой строке
C++
1
void max_el(int **a) {
2) В main() вместо int a[10][10] надо написать
C++
1
2
3
4
    int **a;
    a = new int *[10];
    for (int i =0; i<10; i ++)
        a[i] = new int [10];
Тогда все будет работать.
Просто уже привычка работать с динамическими, вот и стал забывать простые вещи.
Monte-Cristo
2788 / 1374 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
03.06.2009, 10:31     Как в функцию передать параметр - двухмерный массив #8
Цитата Сообщение от Marinich Посмотреть сообщение
int **a; a = new int *[10]; for (int i =0; i<10; i ++) a[i] = new int [10];
ну дык... это ж другое дело... это создание динамического двумерного массива (через массив указателей).. а если есть статический двумерный массив, то тут есть вариант следующий:

C++
1
2
3
4
5
6
7
8
9
int A[5][7];
 
int **M = new int*[5];
for (int i=0; i<5; i++) M[i] = A[i];
   
void func(int **A, int m, int n)
{
   // работа с массивом A[i][j]
}
только необходимо не забывать удалять потом массив указателей...


Цитата Сообщение от AltPeople Посмотреть сообщение
for ( i=1 ; i<=n; i++)
в массивах индексация начинается с 0 ... т.е. необходимо писать так:

C++
1
for ( i=0 ; i<n; i++)
AltPeople
10 / 10 / 1
Регистрация: 25.09.2008
Сообщений: 73
03.06.2009, 11:23     Как в функцию передать параметр - двухмерный массив #9
2 Monte-Cristo :
я знаю, этот код я не проверял, а просто скопировал
Sanek911
4 / 4 / 0
Регистрация: 04.12.2009
Сообщений: 42
21.03.2010, 19:14     Как в функцию передать параметр - двухмерный массив #10
Я ох..ший с людей, которые пишут лишь бы писать
так вот напомню старую русскую пословицу
Слово серебро, молчание золото.
Это относиться и к вашей писанине, вы перед тем как писать пример проверьте его, а потом пишите, а то пишите всякую х..ню, которая не работает
CyBOSSeR
Эксперт C++
2300 / 1670 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
21.03.2010, 19:20     Как в функцию передать параметр - двухмерный массив #11
Можно и так поизвращаться:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <limits>
 
template <class T>
int Max(T matrix, int n, int m)
{
  int max = -std::numeric_limits<int>::max();
 
  for (int i = 0; i < n; ++i)
    for (int j = 0; j < m; ++j)
      if (matrix[i][j] > max)
        max = matrix[i][j];
 
  return max;
}
cibertronic
256 / 143 / 13
Регистрация: 27.12.2009
Сообщений: 893
21.03.2010, 19:22     Как в функцию передать параметр - двухмерный массив #12
ты напиши что тебе именно надо как и куда, я тебе прогу напишу, только ес онас цифрами связана, с символами и строками я ешо не оч

Добавлено через 1 минуту
массив..куда....зачем...мля...
marksh
Сообщений: n/a
06.12.2010, 15:22     Как в функцию передать параметр - двухмерный массив #13
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
typedef struct pixx
{
     unsigned char pix[100][100];
}a;
 
void xxx(pixx* aaas)
{
   aaas->pix[0][1]=2;
}
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
    pixx sss;
    sss.pix[0][0]=1;
    xxx(&sss);
    Edit1->Text=IntToStr(sss.pix[0][0])+" "+IntToStr(sss.pix[0][1])  ;
}
Anarchy
0 / 0 / 0
Регистрация: 25.12.2010
Сообщений: 23
28.12.2010, 22:00     Как в функцию передать параметр - двухмерный массив #14
а как в функцию как параметр передать вот такую штуку FILE* InFile
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.12.2010, 22:45     Как в функцию передать параметр - двухмерный массив
Еще ссылки по теме:
Как передать параметр в функцию? C++
Как передать двухмерный массив C++
C++ Передать метод, как параметр, в функцию
Можно ли передать указатель на функцию как параметр другой функции? C++
г-но код или можно ли передать метку (от гоуту) в функцию как параметр? C++

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

Или воспользуйтесь поиском по форуму:
silent_1991
Эксперт С++
4960 / 3036 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
28.12.2010, 22:45     Как в функцию передать параметр - двухмерный массив #15
Sanek911, советую вам к своим же собственным словам прислушаться и не писать всякую..... Ну дальше вы поняли.
Yandex
Объявления
28.12.2010, 22:45     Как в функцию передать параметр - двухмерный массив
Ответ Создать тему
Опции темы

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