Вопрос Как передать матрицу размером n в процедуру? c++

Регистрация
16 Авг 2013
Сообщения
75
Репутация
0
Спасибо
0
Монет
0
Здравствуйте. Уже как только не пробовал. Не получается передать матрицу в процедуру. Вроде делаю как в разных примерах с форумов, но компилятор постоянно на что-то ругается. Пишу в xcode, но и в других компиляторах выдает ошибки. Сейчас остановился на таком варианте, но моя функция main не видит процедуру. Может кто-то подскажет что делать?

Спасибо!
99567437_c5515a12ad511328f829c4df111a1377_240x240.png

99567437_8551c76cffc1a7ba78cf1d9df430f350_240x240.png

#include

#include

#include

#include

using namespace std;

void sorted(int n, int A[][n]) {

for (int i=0;i
 
Так как у вас n ограничено 15-тями, то можете смело задавать массив А как
int A[15][15]; (примерно 900 байт в стеке - не ардуино же)
Тоже самое в функции: void sorted (int n, int A[][15]);
тоесть сразу на максимальный размер. Даже если вы введете n меньше, на работоспособность это не повлияет.

А если именно ваша попытка с int A[][ n ] - то поможет шаблонный метод. Тогда даже не нужно n передавать в функцию (если размер матрицы соответствует n и матрица всегда квадратная) template
void sorted (int A[][ n ]) {код функции такой же} переменная int n определится автоматически.
соответственно вызов фунции без n: sorted (A);
 
Хочешь нормальную матрицу, которую можно нормально передать - забудь про Сишную имитацию массивов и используй механизмы именно C++:

Объявление: vector A(n, vector(n)); Сортировка: void sorted(
 
n же неизвестна при компиляции
попробуйте заменить в коде n на число и тогда функция скомпилируется. хотя это не решение.
используйте векторы. это быстрее
 
#include
#include
#include
#include

constexpr size_t n = 15;

using namespace std;
using matrix_t = array;

size_t input_rank(const char* msg) {
size_t value = -1;
while (value < 2 || value > n) {
if (value != -1) {
cout
 
Назад
Сверху