IPB
ЛогинПароль:

> Правила раздела!

1. Заголовок или название темы должно быть информативным !
2. Все тексты фрагментов программ должны помещаться в теги [code] ... [/code] или [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ" и используйте ПОИСК !
4. НЕ используйте форум для личного общения!
5. Самое главное - это раздел теоретический, т.е. никаких задач и программ (за исключением небольших фрагментов) - для этого есть отдельный раздел!

 
 Ответить  Открыть новую тему 
> Проблема ис входным параметром рекурсивной процедуры
сообщение
Сообщение #1





Группа: Пользователи
Сообщений: 2
Пол: Мужской

Репутация: -  0  +


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

var
a:array[1..n,1..n] of integer;
b:array[1..n,1..n] of integer;

TopsB:array[1..n] of integer;
arr:array[1..n] of integer;
start:array[1..n] of integer;
arrVar:array[1..n]of integer;
TopA,ind,i,j:integer;

procedure check(vec:array[1..n]of integer);
var
i,j,k:integer;
sumA,sumB,summ:integer;

begin
writeln(TopA,' topA');
for i:=1 to n do
begin
arr[i]:=0;
end;

if((TopA>=1)and(TOpA<5)) then
begin

sumA:=0;
for i:=1 to n do
begin
sumA:=sumA+a[TopA,i];
end;

for i:=1 to n do
begin

{******************}
for k:=1 to n do
begin
writeln(vec[k],' vec ',k);
end;

if ((vec[i]>0)and(isFree(i))) then
begin
sumB:=0;
for j:=1 to n do
begin
sumB:=sumB+b[i,j]
end;
if(sumA=SumB) then
begin
arr[i]:=1;
TopsB[ind]:=i;
ind:=ind+1;
TopA:=Topa+1;

for k:=1 to n do
begin
arrVar[i]:=b[i,k];
end;

check(arrVar);
end;
end;

end;

end;

summ:=0;
for i:=1 to n do
begin
summ:=summ+arr[i];
end;

if(summ<=0) then
begin
TopA:=TopA-1;
ind:=ind-1;
end
else if(TopA<=0) then
begin
writeln('no');
end
else if(TopA>=n) then
begin
writeln('yes');
end;
end;

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Знаток
****

Группа: Пользователи
Сообщений: 481
Пол: Мужской
Реальное имя: Федосеев Павел

Репутация: -  9  +


Приведи, пожалуйста, описание происходящего (=исходное задание), текст программы, которую можно запустить для проверки, входные и ожидаемые на выходе данные.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3





Группа: Пользователи
Сообщений: 2
Пол: Мужской

Репутация: -  0  +


Цитата(Федосеев Павел @ 16.02.2012 20:59) *

Приведи, пожалуйста, описание происходящего (=исходное задание), текст программы, которую можно запустить для проверки, входные и ожидаемые на выходе данные.


спасибо, но я уже сам разобрался в чем проблема - передавал совсем другие данные чем думал. банально перепутал индекс для массива, с которым работал.
Код

for k:=1 to n do
    begin
     arrVar[i]:=b[i,k]; {индекс для "arrVar[]" должен быть "k"}
    end;
                        
check(arrVar);
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 29.03.2024 4:28
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name