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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.04.2012, 22:41   #1
Vika_0_0
Пользователь
 
Регистрация: 09.03.2012
Сообщений: 34
Восклицание Free Pascal задание по ПРОЦЕДУРОАМ!!

A(1)=1, A(2)= 1, A(3)=2, ... , A(2n)=n, A(2n+1)=A(n)+A(n+1).

ВЫЧИСЛИТЬ n-ЫЙ ЧЛЕН ПОСЛЕДОВАТЕЛЬНОСТИ!!!



в скобках указан номер члена в последовательности

Последний раз редактировалось Vika_0_0; 06.04.2012 в 23:07.
Vika_0_0 вне форума Ответить с цитированием
Старый 06.04.2012, 22:45   #2
whatever
a.k.a. Skull
Форумчанин
 
Регистрация: 17.11.2009
Сообщений: 963
По умолчанию

Цитата:
Сообщение от Vika_0_0 Посмотреть сообщение
a_1=1, a_2= 1, a_3=2, ... , a_2n=n, a_2n+1=a_n+a_n+1.

ВЫЧИСЛИТЬ n-ЫЙ ЧЛЕН ПОСЛЕДОВАТЕЛЬНОСТИ!!!
Ты бы хоть скобки расставила чтоли... Я рискну предположить, что "каждый следующий элемент равен сумме двух предыдущих". Если так, то вбивай в поиск "Числа Фибоначчи", решалось неоднократно.

Update:нет, что то не вяжется
Цитата:
a_2n=n, a_2n+1=a_n+a_n+1.
не Фибоначчи это... Так вообще не бывает:
Цитата:
a_12=a_(11+1)=a_5,5 + a_6,5
Пререпиши формулу нормально.
Все тривиальное просто

Последний раз редактировалось whatever; 06.04.2012 в 22:55.
whatever вне форума Ответить с цитированием
Старый 06.04.2012, 23:09   #3
Vika_0_0
Пользователь
 
Регистрация: 09.03.2012
Сообщений: 34
Восклицание

Цитата:
Сообщение от whatever Посмотреть сообщение
Ты бы хоть скобки расставила чтоли... Я рискну предположить, что "каждый следующий элемент равен сумме двух предыдущих". Если так, то вбивай в поиск "Числа Фибоначчи", решалось неоднократно.

Update:нет, что то не вяжется

не Фибоначчи это... Так вообще не бывает:

Пререпиши формулу нормально.


теперь сойдет?
Vika_0_0 вне форума Ответить с цитированием
Старый 07.04.2012, 13:02   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
var a:array[1..100] of integer;
 procedure _in; var n:integer;  begin for n:=1 to 100 do a[2*n+1]:=a[n]+a[n+1]; end;
 procedure _out; var n:integer; begin for n:=1 to 100 do write(a[n]:5);         end;
begin a[1]:=1;a[2]:=1; _in; _out; readln; end.
Пойдет?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 08.04.2012, 06:10   #5
TinMan
Форумчанин
 
Аватар для TinMan
 
Регистрация: 05.09.2011
Сообщений: 869
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Пойдет?
Боюсь, что нет..
Виталик, у тебя, прежде всего, очевидный (запланированный) выход за границы массива. У тебя массив до 100, и ты делаешь цикл до 100, обращаясь к элементам 2*i+1. Но, даже если от этого абстрагироваться, я все равно совсем не понимаю, что ты хотел этим сказать..

Вика, извини за трездеж, но я последний раз отвечаю в тему, где на меня ОРУТ (на всякий случай: CapsLock отключается повторным нажатием), при этом ни сказав ни одного вежливого слова (обратись за обучением вежливости к маме, это на другом форуме..). ЯСНО ТЕБЕ??

В условии я усматриваю явный намек на рекурсию. И хотя задача не стоит выеденного яйца и реально сводится к одной строчке:
Код:
  writeln((n+1) div 2);
- я все-таки приведу рекурсивное решение. Оно использует, правда, не процедуру, а функцию, но я не вижу между этими понятий никаких принципиальных различий. Короче, enjoy yourself..
Код:
function Ai(n: integer): integer;
begin
  if n=1 then Ai:= 1
  else if Odd(n) then
    Ai:= Ai(n div 2) + Ai(n div 2+1)
  else
    Ai:= n div 2
end;

var
  i: integer;

begin
  readln(i);
  write(Ai(i));
  readln
end.
Если будут вопросы - пожалуйста, спрашивай, я буду рад ответить.
Успехов тебе.
Предпочитаю на "ты".
TinMan вне форума Ответить с цитированием
Старый 08.04.2012, 10:10   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
очевидный (запланированный) выход за границы массива
Ага, согласен, как-то не подумал.
Ну парочка IF в циклах исправят это положение )
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
free pascal Риналь Паскаль, Turbo Pascal, PascalABC.NET 2 05.04.2012 14:55
Free Pascal!!! задание по массивам!!!!!!!!! Vika_0_0 Паскаль, Turbo Pascal, PascalABC.NET 10 13.03.2012 18:02
Turbo Pascal и Free Pascal , в чем разница? antoxann Паскаль, Turbo Pascal, PascalABC.NET 31 09.11.2011 07:52
Задание по строкам Шардлэйк Помощь студентам 12 10.12.2010 18:41
а free pascal не читает задачи которые написаны на turbo pascal? demonara Паскаль, Turbo Pascal, PascalABC.NET 3 25.05.2009 16:28