Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.04.2010, 18:14   #11
ROMA2PVT
ТАМБОВСКИЙ ВОЛК.
Участник клуба
 
Аватар для ROMA2PVT
 
Регистрация: 16.03.2010
Сообщений: 1,354
По умолчанию

Сравните в вашей программе значения и на приведённых вами же изображениях.
にんじゃ
ROMA2PVT вне форума Ответить с цитированием
Старый 12.04.2010, 19:40   #12
Studentka_iz_ZP
Пользователь
 
Регистрация: 14.03.2010
Сообщений: 15
По умолчанию

BBedute m u n
m=1
n=2
01 10 02 11 03 12FyHkcu9 =4

такой рез-тат при запуске этой программмы.



m = 1
n = 2
A(0, A(1, 1))
A(0, A(0, A(1, 0)))
A(0, A(0, A(0, 1)))
A(0, A(0, 2))
A(0, 3)
4

вот такой результат при запуске той программы, которая наведена по вашей ссылке. вот такой вывод мне и нужно сделать...
это возможно?
Studentka_iz_ZP вне форума Ответить с цитированием
Старый 12.04.2010, 19:56   #13
ROMA2PVT
ТАМБОВСКИЙ ВОЛК.
Участник клуба
 
Аватар для ROMA2PVT
 
Регистрация: 16.03.2010
Сообщений: 1,354
По умолчанию

Studentka_iz_ZP
Почисленно посмотрите.Гдеж они одинаковые то?Эт вы по первым трём числам определили и по четвёрке.
にんじゃ
ROMA2PVT вне форума Ответить с цитированием
Старый 12.04.2010, 20:21   #14
Studentka_iz_ZP
Пользователь
 
Регистрация: 14.03.2010
Сообщений: 15
По умолчанию

я уже поняла , что не одинаковые.
значит эта работает не правильно?
Studentka_iz_ZP вне форума Ответить с цитированием
Старый 12.04.2010, 20:33   #15
ROMA2PVT
ТАМБОВСКИЙ ВОЛК.
Участник клуба
 
Аватар для ROMA2PVT
 
Регистрация: 16.03.2010
Сообщений: 1,354
По умолчанию

Ну значит да.Ищите новую функцию либо ту врзьмите.На сайберфоруме тоже ошибаются.А ввод больших чисел чтоб работало вы вряд ли сделаете.Как там верно написано что в паскале некоторые рекурсивные функции отказываются работать.Эт факт.
にんじゃ
ROMA2PVT вне форума Ответить с цитированием
Старый 12.04.2010, 20:44   #16
Studentka_iz_ZP
Пользователь
 
Регистрация: 14.03.2010
Сообщений: 15
По умолчанию

function A(m, n)

if m = 0

return n + 1

else if n = 0

return A (m - 1, 1)

else

return A (m - 1, A (m, n - 1))
вот такая у меня есть функция Аккермана на псевдокоде...
Studentka_iz_ZP вне форума Ответить с цитированием
Старый 12.04.2010, 20:57   #17
ROMA2PVT
ТАМБОВСКИЙ ВОЛК.
Участник клуба
 
Аватар для ROMA2PVT
 
Регистрация: 16.03.2010
Сообщений: 1,354
По умолчанию

В вашей приведённой проге вывод значений так просто не выйдет.Я добавил вывод m,n но походу дела это просто тупо вывод хода самого вычисления этой функции но не значений.volvo877 верно её усовершенствовал добывив всё что нужно.
にんじゃ
ROMA2PVT вне форума Ответить с цитированием
Старый 12.04.2010, 21:58   #18
bullvinkle
Временно — юрист.
Форумчанин
 
Аватар для bullvinkle
 
Регистрация: 31.03.2008
Сообщений: 204
По умолчанию

Что бы избежать переполнения стека и отказаться от указателей, нужно организовать "переворачавание" стека. Не знаю как назвать это действие.
Суть такова: если стек полон, то все элементы стека надо аккуратно изъять, переложить их все в одну ячейку стека, но так, что бы потом можно было без потерь от туда их вытащить.
Но я не вижу в коде реализации стека.

Есть лаба, которую мне дали на первом курсе друзья со старших курсов, которую им дали их старшекурисники и т.д.)))) Я ее так и не сдавал - написал свою, но свою не могу найти (а пришлось поднять архив). Вобщем вот код той лабы, которая точно работает, но материал не эксклюзивный)))))
Код:
var b:array [1..2, 1..c] of integer;
d:array [1..2] of integer;
i,k,flag,m,n,c:integer;
f:text;
procedure push(i:integer, dat:integer);
var j:integer;
begin
j:=d[i];
inc(j);
b[i,j]:=dat;
d[i]:=j;
end;
function pop(i:integer):integer;
var i:integer;
begin
j:=d[i];
pop:=b[i,j];
b[i,j]:=0;
dec(j);
d[i]:=j;
end;
function a(m,n:integer):integer;
begin
if flag =0 then
begin
flag:=1;
writeln(f,'A(',m,',',n,')');
end
else
begin
push (1,m);
push(1,n);
write(f,'=');
for i:=1 to d[1] do push(2,pop(1));
for i:=1 to k do
begin
c:=pop(2);
write (f,'A(',c,',');
push(1,c);
end;
write (f,pop(2));
pop(1);
for i:=1 to k do write(f,')');
writeln(f);
end;
if m=0 then 
begin
a:=n+1;
if d[1]=0 then writeln(f,'=',n+1) else
begin
dec(k);
pop(1);
end;
end
else in n = 0 then 
begin
a:=a(m-1,1);
end
else
begin
inc(k);
push(1,m-1);
a:=a(m-1, a(m,n-1));
end;
end;
BEGIN
assign(f,'out.txt');
rewrite(f);
writeln('Enter M and N');
write('m = ');
readln(m);
write('n = ')
readln(n);
flag:=0;
k:=1;
a(m,n);
close(f);
END.
Могут быть ошибки, т.к. паскаля у меня нет, и я писал сразу здесь, на форуме.
Алгритм точно работает, могут быть опечатки, я не внимательный. Могу так же прислать фотку, или скан на мыло. Ну, или по факсу.
bullvinkle вне форума Ответить с цитированием
Старый 13.04.2010, 17:46   #19
Studentka_iz_ZP
Пользователь
 
Регистрация: 14.03.2010
Сообщений: 15
По умолчанию

насколько я поняла рез-тат записывантся в текстовый файл out.txt..
но я его что-то не нахожу..
и я для начала не понимаю что это за массивы b ,d
и что это за значение с-?
Studentka_iz_ZP вне форума Ответить с цитированием
Старый 13.04.2010, 17:51   #20
JTG
я получил эту роль
Старожил
 
Аватар для JTG
 
Регистрация: 25.05.2007
Сообщений: 3,694
По умолчанию

Нате вам аццкой быстроты вариант с деревьями, без рекурсии

Код:
program Ack;

{$APPTYPE CONSOLE}

uses
  SysUtils;

type TItem = record
      m_b, m_ak: integer;
     end;

var arr: array of TItem;
    i,m,n:integer;

begin
  m:=strtoint(paramstr(1));
  n:=strtoint(paramstr(2));

  SetLength(arr,m+1);

  for i:=0 to m-1 do
  begin
    arr[i+1].m_b := -1;
    arr[i+1].m_ak := 1;
  end;

  arr[0].m_b := -1;
  arr[0].m_ak := 0;

  while arr[m].m_b <> n do
  begin
    inc(arr[0].m_b);
    inc(arr[0].m_ak);
    i := 0;
    While ((i <> m) and (arr[i].m_b = arr[i+1].m_ak)) do
      begin
        inc(arr[i+1].m_b);
        arr[i+1].m_ak := arr[i].m_ak;
        inc(i);
      end

  end;
  Writeln(arr[m].m_ak);
end.
пыщь
JTG вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Функция Sam04 Помощь студентам 1 11.09.2008 13:51
Функция ZiLi Microsoft Office Excel 1 05.09.2008 18:37
функция sergei64_89 Общие вопросы C/C++ 2 25.05.2008 16:48
Функция... Sota Помощь студентам 5 24.05.2008 22:19
одна функция потока, а другая функция - член класса запускающего этот поток Дмитрий_Ч Общие вопросы C/C++ 2 27.09.2007 08:50