Модераторы: volvo877, Snowy, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> задача на Паскале 
:(
    Опции темы
Aleche
Дата 4.11.2004, 21:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 53
Регистрация: 4.11.2004
Где: Воронеж

Репутация: нет
Всего: 5



Привет!!!!!Необходима помощь опытных программистов!!! Нужна программа.Задача следущая:
Пусть дано натуральное число k.Напечатайте k-ю цифру последовательности 1123581321 ...,в которой выписаны подряд числа Фибоначчи.Фика втом,что использовать можно только простейшие операторы(нельзя применять массивы,функции...)
PM MAIL ICQ   Вверх
Zero
Дата 4.11.2004, 22:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2169
Регистрация: 23.10.2004
Где: Россия, г. Рязань

Репутация: нет
Всего: 24



Aleche, ничего проще я просто не видел... smile
Пиши вот так:
Код

program Fib;
var
  k:integer;
  i,p0,p1,p:integer;
begin
    write('Введите k='); read(k);
    k:=k-2;  {Установить реальное число, с учётом остования чисел от начала}
    p0:=1;   {Начальное значение}
    p1:=1;   {Второе значение}
    for i:=1 to k do
        begin
             p:=p0+p1;
             p0:=p1;  
             p1:=p;
        end;
    writeln(p);
end.

PM MAIL ICQ   Вверх
maxim1000
Дата 5.11.2004, 11:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: нет
Всего: 110



этот код выдаст k-тое число последовательности, а не k-ю цифру
Код

function Degree(n:integer):integer;
var
 d:integer;
begin
 d:=0;
 while(n>0)do
 begin
   n:=n div 10;
   inc(d);
 end;
 Degree:=d;
end;
function GetDigit(k:integer):integer;
var
 a,b,c:integer;
 deg:integer;
begin
 a:=1;
 b:=1;
 k:=k-2;
 while(true)do
 begin
   c:=a+b;
   deg:=Degree(c);
   if(k<deg)then
     break;
   k:=k-deg;
   a:=b;
   b:=c;
 end;
 k:=deg-1-k;
 while(k>0)do
 begin
   c:=c div 10;
   dec(k);
 end;
 GetDigit:=k mod 10;
end;
только у меня Delphi нету, не проверял

Это сообщение отредактировал(а) maxim1000 - 5.11.2004, 11:57


--------------------
qqq
PM WWW   Вверх
Zero
Дата 5.11.2004, 21:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2169
Регистрация: 23.10.2004
Где: Россия, г. Рязань

Репутация: нет
Всего: 24



Действительно, maxim1000, я что-то непредусмотрел, осталось узнать у автора, сможет ли он разобратся в твоём коде... smile
PM MAIL ICQ   Вверх
maxim1000
Дата 5.11.2004, 23:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: нет
Всего: 110



Цитата
Действительно, maxim1000, я что-то непредусмотрел, осталось узнать у автора, сможет ли он разобратся в твоём коде...

так все просто smile
хотя я сам не люблю разбираться в чужом коде, поэтому немного облегчу эту задачу:
функция Degree возвращает количество цифр в числе
k считает цифры последовательности (точнее сколько осталось до нужной цифры)
проверка (k<deg) означает, что искомая цифра принадлежит текущему числу
если нет - пропускаем текущее число (сдвигаемся на deg цифр) и берем следующее число
когда в конце концов доходим до нужного числа, начинаем вытаскивать из него нужную цифру
цифры числа определяются так: берется остаток от деления на 10, потом число делится на 10 и опять
только в этом случае числа получаются в порядке младший-старший
а в указанной последовательности порядок другой, для этого и делается "разворот" k:=deg-1-k



--------------------
qqq
PM WWW   Вверх
Zero
Дата 5.11.2004, 23:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2169
Регистрация: 23.10.2004
Где: Россия, г. Рязань

Репутация: нет
Всего: 24



Ну мне то просто, только он ещё такое написал:
Цитата
Фика втом,что использовать можно только простейшие операторы(нельзя применять массивы,функции...)

Возможно он только начал изучать паскаль, и скорее всего ещё не проходил использования подпрограмм, поэтому, давай лучше подождём что он ответит... smile
PM MAIL ICQ   Вверх
maxim1000
Дата 6.11.2004, 00:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: нет
Всего: 110



тут использование функции непринципиально, скорее для понятности
можно просто вставить ее код в основную


--------------------
qqq
PM WWW   Вверх
Aleche
Дата 6.11.2004, 16:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 53
Регистрация: 4.11.2004
Где: Воронеж

Репутация: нет
Всего: 5



Спасибо,ребята!Я действительно только начала изучать Паскаль.
PM MAIL ICQ   Вверх
VingradFan
Дата 22.5.2007, 22:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 477
Регистрация: 30.1.2006
Где: Москва

Репутация: нет
Всего: 3



Всем привет.
У меня аналогичная задача, с той лиш разницей, что нужно написать первые к чисел ряда фибоначчи с помощью процедуры и ее рекурсивного вызова.
Только не надо кидать мне код, так не интересно...лучше намекните непрозрачно, как это организовать
Заранее спасибо.


--------------------
Когда-нибудь я стану богатым и куплю себе столько Ролтонов, сколько захочу...
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi"
THandle
Rrader
volvo877

Запрещается!

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

2. Публиковать ссылки на варез

3. Оффтопить

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, THandle, Rrader, volvo877.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Object Pascal: кроссплатформенные технологии | Следующая тема »


 




[ Время генерации скрипта: 0.0513 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.