Рекурсивно заполнить двумерный массив на visual C++

lvknopka

как рекурсивно заполнить двухмерный массив?

Vikuschechka9

для этого нужно что-то написать (не в форум)

mab1


#include <memory.h>

char A[321][523];

void fill(char iter = 0)
{
if (iter > 0)
{
memset(A, 99, sizeof(A;
return;
}
fill(iter + 1);
}

int main
{
fill;
// Теперь двумерный массив A забит байтом 99
return 0;
}

Vikuschechka9

фак мой мозг, за что ты его так :o

Innysa

вротмненоги, что это?

lvknopka

тут все гораздо хуже нужна прямая рекурсия типа
int function test (int n, int l, int k,int mas[][],int massi[][])
{
if massi[l][k]=1
if mas[l][k]!=0
{
mas[l][k]=1;
test (n, l, k+1,mas,int massi);
...
//(и т.д)
}
if (l==n-1)&&(massi [l][k]==1)
{
return (1);
}
else {return (0);}
}
и где тут ошибка? :confused:
кроме синтаксиса

lvknopka

собственно вопрос в том какие параметры передавать на следующий шаг рекурсии
test (n,l,k+1,mass,massi)
не проходит

Innysa

Давай ты лучше опишешь, что ты пытаешься вообще получить в конечном счете и что означает "не проходит" в данном случае. Плюс про тег code не забываем...

lvknopka

в общем есть массив massiv[n][n]
ззполнен 0 и 1 случайным образом
нужно проверить есть ломаная соединяющая 0ую строку и n-1-ую (диагональное соединение не считается)
я хочу рекурсивно последовательно подставляя столбцы первой строки проверить массив на
существование оной
чтобы рекурсия не зациклилась нужно заполнить др. массив mass[n][n]
и к mass и к massiv нужен доступ из основной программы
т. е. оба массива глобальные
вопрос как написать эту функцию, точнее что исправить
?

Innysa

Ну в первую очередь бросается в глаза то, что ты неправильно позвращаешь значение из функции. Если у тебя возвращается 1, то ее нужно протащить через весь стек вызовов, то есть как минимум

test (n, l, k+1,mas,int massi);

заменить на

if (test (n, l, k+1,mas, massi) == 1)
return 1;

lvknopka

там 2ое сообщение было там все норм

seregaohota

if massi[l][k]=1
и где тут ошибка?
кроме синтаксиса
У тебя во всех проверках точно == а не =
А то наприсваиваешь внутри if

lvknopka

функция

int test (int n,int l, int k, int mas[1000][1000],int massi[1000][1000])
{
if (massi[l][k]==1)
{
if(mas[l][k]!=1)
{
mas[l][k]=1;
test (n,l+1,k,mas,massi);
test (n,l-1,k,mas,massi);
test (n,l,k+1,mas,massi);
test (n,l,k-1,mas,massi);}}
if l==(n-1 && (massi [l][k]==1
{return 1;
}
else {return (0);};
}
не происходит рекурсии (возвращает 0)
если проверять последнюю строку то что-то работает т.е.
оба if`а работают т.к. программа не циклится и дает значения в этом случае
но при вводе первой строки (нулевой строки массива) на выходе всегда 0
вопрос собственно в том что передавать внутри?

lvknopka

тему можно закрывать!
там if последнй с тестами в 1 скобках должен быть :)
Оставить комментарий
Имя или ник:
Комментарий: