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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.10.2009, 06:19   #1
halk
Пользователь
 
Регистрация: 07.10.2009
Сообщений: 21
По умолчанию найти н-ую пцифру в последовательности фиббоначи в паскале

помогите пожалуйста составить эту программку. сколько мучаюсь - не получается .
23) Дано натуральное число N. Указать N-ую цифру последовательности
1123581321…, в которой выписаны подряд все числа Фибоначчи.

не используя массивы .строки
halk вне форума Ответить с цитированием
Старый 08.10.2009, 07:36   #2
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

http://www.programmersforum.ru/searc...earchid=375687
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 08.10.2009, 08:53   #3
Last
В прострации
Форумчанин
 
Регистрация: 13.01.2009
Сообщений: 239
По умолчанию

Код:
a:=1;
b:=1;
for i:=3 to n do
 begin
  c:=a+b;
  a:=b;
  b:=c;
 end;
Пол-жизни сидючи, в монитор глядючи...
Last вне форума Ответить с цитированием
Старый 08.10.2009, 14:18   #4
halk
Пользователь
 
Регистрация: 07.10.2009
Сообщений: 21
По умолчанию

а нельзя полный вариант увидеть ! ну оч прошу!=)
halk вне форума Ответить с цитированием
Старый 08.10.2009, 14:27   #5
Lime
Форумчанин
 
Аватар для Lime
 
Регистрация: 10.02.2009
Сообщений: 815
Радость

Цитата:
Сообщение от Last Посмотреть сообщение
Код:
function fn(n:integer):integer;
var a,b,c:integer;
begin
a:=1;
b:=1;
for i:=3 to n do
 begin
  c:=a+b;
  a:=b;
  b:=c;
 end;
result:=c;
end;
Вызывай функцию получай ответ.

ПС : - полезная кнопка

Последний раз редактировалось Lime; 08.10.2009 в 15:10.
Lime вне форума Ответить с цитированием
Старый 08.10.2009, 14:39   #6
halk
Пользователь
 
Регистрация: 07.10.2009
Сообщений: 21
По умолчанию

Цитата:
Сообщение от Alex Cones Посмотреть сообщение
че т эта ссылка не открывается....(

стоп!!! я не знаю как вызвать функцию а во вторых i integer ili real ! пожалуйста напиши полный вариант можешь прислать на мыло halk091@rambler.ru помоги мне оч прошу! иначе погорю

Цитата:
Сообщение от Lime Посмотреть сообщение
Вызывай функцию получай ответ.
знать бы как выше сообщение я тебе написал.....

Цитата:
Сообщение от Lime Посмотреть сообщение
Вызывай функцию получай ответ.
ах да мне n дано нужно ввести н и чтоб показал цифру порядковый номер которой равен н ну в общем как то так и чтоб еще последовательность до н на экран выводился.... ужас! вобщем я чайник

помоги пжалуйста!!!!!!!!!!!!!!!!

Последний раз редактировалось Манжосов Денис :); 08.10.2009 в 15:14.
halk вне форума Ответить с цитированием
Старый 08.10.2009, 15:44   #7
ОДИНОЧЕСТВО В СЕТИ
Любопытная Вредина
Участник клуба
 
Аватар для ОДИНОЧЕСТВО В СЕТИ
 
Регистрация: 19.06.2009
Сообщений: 1,285
По умолчанию

Код:
n дано нужно ввести н и чтоб показал цифру порядковый номер которой равен н ну в общем как то так и чтоб еще последовательность до н на экран выводился
ну раз так держи процедурку
Код:
procedure fn(n:integer);
var a,b,c:integer;
s,s1:string;
begin
a:=1;
b:=1;
s:='';
s1:='';
while length(s)<=n do
 begin
  c:=a+b;
  a:=b;
  b:=c;
  str(c,s1);
  s:=s+s1;
 end;
writeln(s);
Writeln(s[n]);
end;
Дурь - это особая форма материи, которая не возникает ниоткуда и не исчезает никуда, а лишь переходит из одной головы в другую.
ОДИНОЧЕСТВО В СЕТИ вне форума Ответить с цитированием
Старый 08.10.2009, 17:09   #8
halk
Пользователь
 
Регистрация: 07.10.2009
Сообщений: 21
По умолчанию

Цитата:
Сообщение от ОДИНОЧЕСТВО В СЕТИ Посмотреть сообщение
Код:
n дано нужно ввести н и чтоб показал цифру порядковый номер которой равен н ну в общем как то так и чтоб еще последовательность до н на экран выводился
ну раз так держи процедурку
Код:
procedure fn(n:integer);
var a,b,c:integer;
s,s1:string;
begin
a:=1;
b:=1;
s:='';
s1:='';
while length(s)<=n do
 begin
  c:=a+b;
  a:=b;
  b:=c;
  str(c,s1);
  s:=s+s1;
 end;
writeln(s);
Writeln(s[n]);
end;
я попробовал но программа не запускается !!! я же ваще не понимаю в паскале ! кто нибудь может полный вариант нормальный написать!? спасибо заранее
halk вне форума Ответить с цитированием
Старый 08.10.2009, 17:34   #9
Sparky
Участник клуба
 
Аватар для Sparky
 
Регистрация: 15.05.2009
Сообщений: 1,222
По умолчанию

program f;
var
n:integer;
function fib(n:integer):longint;
begin
if (n=1) or (n=2) then fib:=1
else fib:=fib(n-1)+fib(n-2);
end;


begin
writeln('ââåäèòå n');
read(n);
write(fib(n));
end.

может чем то поможет
Единственное, что ограничивает полет мысли программиста-компилятор

Последний раз редактировалось Sparky; 08.10.2009 в 17:37.
Sparky вне форума Ответить с цитированием
Старый 08.10.2009, 18:31   #10
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

ребят, ну что ж Вы издеваетесь, нужна n-я цифра последовательности, а не значение n-го члена последовательности!!!

Решение от ОДИНОЧЕСТВО В СЕТИ решает данную задачу!
Но, только с одной оговорочкой -
Цитата:
не используя массивы, строки


Вот, прилагаю код, решающий данную задачу!
Хотя, за искусственно вводимые ограничения (конкретно за запрет использования строк) я бы подобным "преподавателям"....
пришлось добавить две функции:
одна возращает длину числа
другая - возращает K-ю цифру из числа (при этом цифры числа считаем слева направо)

вот код программы:
Код:
{
  Дано натуральное n. 
    Напечатать n-ю цифру последовательности 
    1123581321:, в которой выписаны подряд все числа Фибоначчи.
}

var k, n, CurLen : integer;
  iPrev, iCur, iTemp : Longint;

  function LenOfInteger(M : Longint) : integer;
  var Res : integer;
  begin
    Res := 1;
    while M >= 10  do begin
      Inc(Res);
      M := M div 10;
    end;
    LenOfInteger := Res
  end;

  function OneDigitFromInt(M : Longint; K : integer) : integer;
  var i : integer;
  begin
    if (K<=0) or (K>LenOfInteger(M)) then WriteLn('Ошибка!')
    else begin
      K := LenOfInteger(M) - K + 1;
      while K>1 do begin
        M := M div 10;
        dec(K);
      end;
      i := M mod 10;
      OneDigitFromInt := M mod 10;
    end;
  end;

begin
  WriteLn('Введите n');
  ReadLn(n);
  if n<=0 then
    WriteLn('Не может быть такой цифры в последовательности!')
  else
    begin
      if (n<3) then WriteLn(n:1,'-я цифра в последовательности = 1')
      else begin
        CurLen := 2;
        iPrev := 1;
        iCur  := 1;
        iTemp := iPrev+iCur;
        while (CurLen+LenOfInteger(iTemp)) < n do
        begin
          CurLen := CurLen+LenOfInteger(iTemp);
          iPrev := iCur;
          iCur := iTemp;
          iTemp := iPrev+iCur;
        end;
        WriteLn(n:1,'-я цифра в последовательности = ',
              OneDigitFromInt(iTemp,n-CurLen));
      end;
    end;
end.
Вложения
Тип файла: rar fib_seq.rar (3.1 Кб, 13 просмотров)

Последний раз редактировалось Serge_Bliznykov; 08.10.2009 в 19:18. Причина: добавил программку...
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Найти кол-во целых чисел в первой последовательности и кол-во нечетных во второй. DjDeniels-61 Помощь студентам 7 28.06.2009 13:04
Найти последнюю цифру от числа в Паскале Карабин Помощь студентам 100 17.05.2009 17:34
Определить k-ую цифру последовательности Фибоначчи и последовательности натуральных чисел. Med Помощь студентам 1 20.03.2009 11:40
Помогите найти алгебрасическую сумму!на паскале vdv08 Помощь студентам 4 07.11.2008 00:19
Помогите найти ошибку в паскале. Рената Паскаль, Turbo Pascal, PascalABC.NET 14 26.05.2007 12:12