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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.12.2012, 16:15   #1
ArJero
Новичок
Джуниор
 
Регистрация: 23.12.2012
Сообщений: 1
Вопрос раюота с циклами в Pascal

Доброго времени суток, мне нужно написать программу вот само задание: Дано натуральное число K. Наречатать k-ю цифру последовательности в которой подряд выписаны все числа фибоначи. Знаю где-то на форумах эта тема уже была, но вся проблемма в том что там сделано либо через функции либо через строки, у нас задание только циклы(ни массивов ни функций ни строк) я написал прогу она вывыдит k-ое число последовательности но, я не знаю как вывести k-ю цифру, подскажите кто может как решить проблемму вот собственно код проги:
Код:
uses crt;
var i,k,a,b:longint;
    s,t:string;
begin
  writeln('Введите k');
  readln(k);
  s:='1';
  a:=1;
  For i:=2 to k do Begin
    a:=a+b;
    str(a,t);
    s:=s+t;
    b:=a-b;
  End;
  writeln(s);
  writeln(s[k]);

end.

вот эту нашел на форуме, тоже пашет но там функция и я не знаю как ее заменить вот код:
Код:
uses crt;
var k,i,s,b,c,n,a:longint;
function Fib(i:integer):longint;{функция создания чисел Фибоначчи}
begin
if i<=2 then Fib:=1{первые 2 числа=1}
else
Fib:=Fib(i-2)+Fib(i-1);{остальные равны сумме 2х предыдущих}
end;
begin
clrscr;
write('k=');readln(k);{задаем номер цифры в ряду}
writeln('послед: ');
s:=0;i:=0;{суммарное количество цифр в ряду, номер очередного числа Фибонвччи}
while s<k do{пока количество цифр меньше заданного номера}
   begin
     i:=i+1;{берем очередной номер}
     b:=Fib(i);{вычисляем число}
     c:=1;{пока цифра одна}
     n:=10;{основание десятичной системы счисления}
     while b div n<>0 do{пока число делится на 10}
        begin
          n:=n*10;{увеличиваем делитель 10, 100, 1000...}
          c:=c+1;{считаем цифры в числе}
        end;
    s:=s+c;{считаем общее количество цифр}
    write(b);{выводим ряд на экран}
  end;
s:=s-c;{вычитаем количество цифр последнего числа, становимся паре заданным номером, или на нем}
n:=n div 10;{уменьшаем делитель в 10 раз}
while s<>k do{пока количество цифр в ряду не равно заданному номеру}
  begin
   a:=b div n mod 10;{отделяем по 1 цифре от последнего числа и запоминаем ее}
   n:=n div 10;{уменьшаем делитель}
   s:=s+1;{добавляем длину на 1, пока не придем обратно в заданный номер}
 end;
writeln;
write('заданная цифра=',a);{выводим цифру на позиции заданного номера}
end.

Последний раз редактировалось Stilet; 23.12.2012 в 17:24.
ArJero вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задание с циклами: ввод и проверка чисел.(Pascal) swillrocker Помощь студентам 4 04.05.2011 20:37
Pascal.Задача с циклами zhopenzhopen Помощь студентам 1 20.11.2010 20:10
Pascal.Работа с массивами и циклами. Миша44 Помощь студентам 2 09.11.2010 22:19
задачa с циклами в Pascal Vero Помощь студентам 3 21.09.2010 17:26