2 / 2 / 5
Регистрация: 28.06.2015
Сообщений: 81
1

Как мне вернуть двумерный массив из функции ?

30.09.2015, 15:46. Показов 11895. Ответов 6
Метки нет (Все метки)

Здравствуйте, форумчане.
Столкнулся с проблемой.
Как мне вернуть из функции двумерный массив ?
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
static int Dijkstra(int[,] mass)
        {
            Console.WriteLine("Dijkstra algoritm:");
            Console.WriteLine();
            int size = (int)Math.Sqrt(mass.Length);
            bool[] a = new bool[size];
            int[] b = new int[size];
            int[] c = new int[size];
            for (int i = 0; i < size; i++)
            {
                for (int j = 0; j < size; j++)
                {
                    a[j] = false;
                    b[j] = mass[i, j];
                    c[j] = i;
                }
                a[i] = true;
                c[i] = 0;
                int min = int.MaxValue;
                int index = 0;
                for (int k = 0; k < size - 1; k++)
                {
                    for (int n = 0; n < size; n++)
                        if (b[n] < min && a[n] == false)
                        {
                            min = b[n];
                            index = n;
                        }
                    for (int l = 0; l < size; l++)
                    {
                        if ((b[l] > min + mass[index, l]) && (a[l] == false))
                        {
                            b[l] = min + mass[index, l];
                            c[l] = index;
                        }
                    }
                    min = int.MaxValue;
                    a[index] = true;
                }
                for (int j = i + 1; j < size; j++)
                {
                    mass[i, j] = b[j];
                    mass[j, i] = b[j];
                }
            }
            return mass;//мне нужно вернуть из функции двумерный массив
        }
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.09.2015, 15:46
Ответы с готовыми решениями:

Как вернуть двумерный массив из функции?
//Программа меняет столбцы в массиве. последний столбец и столбец, содержащий минимальный по...

Как вернуть из функции ссылку на статически создаваемый двумерный массив?
foo(...){ static int Arr return Arr; } int ((foo)(const int m)) //Неверно

Вернуть двумерный массив из функции
Здравствуйте. Не так давно работаю с C++, поэтому очень нужна помощь. Есть такая функция: void...

Вернуть двумерный массив их функции
допустим есть в функции двумерный массив int** foo(){ int a; return // a; } как...

6
127 / 121 / 68
Регистрация: 27.08.2015
Сообщений: 232
30.09.2015, 15:55 2
C#
1
2
3
4
        static int[,] Foo()
        {
            return new int[4, 4];
        }
1
2 / 2 / 5
Регистрация: 28.06.2015
Сообщений: 81
30.09.2015, 16:00  [ТС] 3
Error 1 Cannot implicitly convert type 'int[*,*]' to 'int'
0
123 / 123 / 72
Регистрация: 11.05.2014
Сообщений: 331
30.09.2015, 16:04 4
Лучший ответ Сообщение было отмечено Willyams как решение

Решение

У вас метод сам прототипирован возвращать int. Поменяйте на
C#
1
static int[,] Dijkstra(int[,] mass) {...}
А вообще зачем вам возвращать массив, если уже переданный массив будет содержать в себе изменения, внесённые методом?
3
Администратор
Эксперт .NET
9380 / 4664 / 757
Регистрация: 17.04.2012
Сообщений: 9,511
Записей в блоге: 14
30.09.2015, 16:20 5
Цитата Сообщение от Detect Посмотреть сообщение
уже переданный массив будет содержать в себе изменения
Willyams, благодаря этому факту (т.е. тому, что массивы - ссылочные типы), вам вообще ничего не нужно возвращать. Убираем все return'ы, сигнатура
C#
1
static void Dijkstra(int[,] mass)
1
2 / 2 / 5
Регистрация: 28.06.2015
Сообщений: 81
30.09.2015, 16:37  [ТС] 6
затем мне нужно будет возвращенный из функции массив использовать в другой функции.
Как тогда лучше поступить ?
0
Администратор
Эксперт .NET
9380 / 4664 / 757
Регистрация: 17.04.2012
Сообщений: 9,511
Записей в блоге: 14
30.09.2015, 16:48 7
Willyams, переменная с предыдущим массивом же останется.
C#
1
2
3
int[,] array = { ... };
Dijkstra(array);
AnotherMethod(array);  // подставьте название своего другого метода.
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.09.2015, 16:48
Помогаю со студенческими работами здесь

Вернуть двумерный динамический массив из функции
Как написать функцию которая возвращает двумерный динамический массив?

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

Как вставить нужные мне числа в двумерный массив
Есть матрица 3х3 void ShowMatrix(double** matrix) { for (int i = 0; i &lt; N; i++) { for...

Как вернуть массив в данной функции ? Или как записать массив в переменную ?
#pragma once #include &quot;stdafx.h&quot; const int S = 49; int bin2; int decbin(int a, int...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru