help_me_plz
@help_me_plz
Студент ГрГУ

Как сделать чтобы функция возвращала массив?

#include <iostream>

using namespace std;

void SortK(int** a, int N, int M) {
	for (int i = 0; i < N; i++)
	{
		for (int j = 0; j < M; j++)
		{
			for (int k = 0; k < N; k++)
			{
				if (a[i, j] < a[i, k])
				{
					swap(a[i][j], a[i][k]);
				}
			}
		}
	}
}

void output(int** a, int N, int M) {
	for (int i = 0; i < M; i++) {
		for (int j = 0; j < N; j++) {
			cout << a[i][j] << " ";
		}
		cout << endl;
	}
}

int main()
{
	int M, N, i, j, **matrix;

	cin >> N >> M;

	matrix = new int *[M];

	for (i = 0; i < M; i++) {
		matrix[i] = new int[N];
	}

	for (i = 0; i < M; i++) {
		for (int j = 0; j < N; j++) {
			cin >> matrix[i][j];
		}		
	}

	cout << "Matrix - " << endl;

	output(matrix, M, N);

	SortK(matrix, N, M);

	cout << "Sort - " << endl;

	output(matrix, M, N);

}


Сортировка работае только в функции, а зза пределами массив остается прежним. как реализовать функцию для возвращения массива?
  • Вопрос задан
  • 102 просмотра
Пригласить эксперта
Ответы на вопрос 3
devalone
@devalone
̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻
std::vector</* Type */> func(/* arguments */);
Ответ написан
vt4a2h
@vt4a2h
Senior software engineer (C++/Qt/boost)
Вообще ваше решение должно работать нормально. Попробуйте пересобрать программу и заполнить матрицу 3x3 числами от 9 до 1. Я по крайней мере не вижу проблем с работоспособностью кода.
Ответ написан
@alarih2_0
Это не должно работать, это же не Паскаль. Оператор запятая возвращает значение последнего операнда, поэтому
(a[i, j] < a[i, k]) реально дает (a[j] < a[k]).
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через TM ID
Похожие вопросы