Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Xadjee
2 / 2 / 1
Регистрация: 19.10.2014
Сообщений: 51
#1

Передача в функцию многомерного массива

21.06.2016, 17:39. Просмотров 223. Ответов 5
Метки нет (Все метки)

Как передать в функцию многомерный массив при условии что он уже заранее известен и проинициализирован?
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
    double A[][3] = 
    {
        {2.1,   3,    2},
        {  1,   0,  1.3},
        {  5,   0,  7.4}
    };
    double B[][4] = 
    {
        { 15,   7.1,      1,      0},
        { -4,   -10,    2.3,      1},
        {  2,     0,     -5,    1.7},
        {0.4,   1.5,      1,      3}
    };
    double C[][3] = 
    {
        {6,     3.1,    4.7},
        {-3,      7,      0},
        { 1,    5.2,     -8}
    };
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.06.2016, 17:39
Ответы с готовыми решениями:

Передача элемента многомерного массива в функцию
Здравствуйте. Даже не знаю как правильней обозначить проблему. Вот код, там я коментами расписал...

Передача массива в функцию
Здравствуйте, помогите разобраться. Необходимо написать функцию для вывода массива на экран, но тип...

Передача массива в функцию
Здравствуйте. Код читает матрицу из файла и записывает ее в динамический массив и выводит на экран....

Передача массива в функцию
Что я делаю не так? Как конкретно передавать массив в функцию? #include <stdio.h> #define MAS...

Передача массива в функцию
Делал программу изначально что в самой подфункции объявлял массив, заполнял его числами и...

5
Hikari
Хитрая блондиночка $)
1451 / 963 / 399
Регистрация: 21.12.2015
Сообщений: 3,785
21.06.2016, 18:04 #2
На сколько я знаю в Си матрицы передаются двойным указателем
C
1
func(double **array)
1
CoderHuligan
801 / 477 / 199
Регистрация: 30.06.2015
Сообщений: 2,578
Записей в блоге: 4
21.06.2016, 19:05 #3
Цитата Сообщение от Xadjee Посмотреть сообщение
Как передать в функцию многомерный массив при условии что он уже заранее известен и проинициализирован?
Сделать его глобальным
1
Xadjee
2 / 2 / 1
Регистрация: 19.10.2014
Сообщений: 51
21.06.2016, 19:21  [ТС] #4
Можно на конкретном примере, как мне 3 объявленных матрицы передать в функцию? На примере функции вывода в консоль матриц.
Через указатель на указатель могу только динамические матрицы передавать. Но динамическую матрицу не инициализировать на этапе объявления, придется вручную каждый элемент присваивать. Не вариант.
Сделать глобальными тоже смысла нет, реализация расчетов не будет универсальной.

делал так:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
double scalarProduct (double matrix[4][4], int n)
{
    int i,j;
    double min;
    int col = 0, row = 0;
    double sum = 0;
    min = matrix[0][0];
    for (i = 0; i<n; i++)
        for (j = 0; j<n; j++)
            if (matrix[i][j]<min) 
            {
                min = matrix[i][j];
                row = i;
                col = j;
            }
 
    for (i = 0; i<n; i++)
        sum += matrix[col][i] * matrix[i][row];
    return sum;
}
но передать можно только матрицу 4 на 4, для матриц 3 на 3 заводить отдельную надо.
0
Байт
Эксперт C
17943 / 11933 / 2479
Регистрация: 24.12.2010
Сообщений: 24,043
21.06.2016, 19:38 #5
Xadjee, Можно попробовать передавать как одномерные массивы
C
1
2
3
4
5
6
7
8
9
10
f(double *X, int n, int m)
{
  X[i*m + j] - это элемент [i][j]
}
main()
{
    f(&A[0][0], 3, 3);
    f(&B[0][0], 4, 4);
    f(&C[0][0], 3, 3);
}
Добавлено через 3 минуты
Цитата Сообщение от Hikari Посмотреть сообщение
На сколько я знаю в Си матрицы передаются двойным указателем
В данном случае это не катит. Тогда и матрицу надо создавать другим способом, как правильно отметил ТС.

Не по теме:

Цитата Сообщение от CoderHuligan Посмотреть сообщение
Сделать его глобальным
"Фи, лейтенант! Рыбу - ножом?" (старинный анекдот):)

2
CoderHuligan
801 / 477 / 199
Регистрация: 30.06.2015
Сообщений: 2,578
Записей в блоге: 4
21.06.2016, 20:22 #6
Цитата Сообщение от Байт Посмотреть сообщение
"Фи, лейтенант! Рыбу - ножом?" (старинный анекдот)

Не по теме:

Это на самый крайняк..



Добавлено через 5 минут
Цитата Сообщение от Xadjee Посмотреть сообщение
Можно на конкретном примере, как мне 3 объявленных матрицы передать в функцию?
Обьявляем так :
C
1
double scalarProduct (double *matrix, int n)
как уже было замечено, вызываем так:
C
1
scalarProduct (*matrix, n)
в функции работаем через разыменование указателей.
0
21.06.2016, 20:22
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.06.2016, 20:22

Передача массива в функцию
В общем задание такое Превратить этот код в другой код, что-то поменять, я не врубаюсь что и как....

Передача массива в функцию.
Здравствуйте) Не могли бы Вы мне помочь с такой задачей: напишите функцию с именем sumarray(),...

Передача массива в функцию
Доброго времени суток! Есть программа #include &lt;stdio.h&gt; #include &lt;conio.h&gt; #include...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

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