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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.06.2017, 19:11   #1
avatar54
Пользователь
 
Регистрация: 21.02.2017
Сообщений: 29
По умолчанию Найти m-й член последовательности {an} - Free Pascal

Найти m-й член последовательности {an}, если известно, что a1=k (натуральное число), ai+1=2ai - 1, где i=1, 2, 3, ... , и определить, встречается ли в записи результата, хотя бы один раз, цифра 7.

Как сделать что бы m-й член последовательности был задан в массиве, например не меньше 1 и не больше 10000

Код:
uses crt;
var n,k,a1,ai,i:longint;
begin
repeat
write('Введите n=');
readln(n);
until n>0;
repeat
write('Введите натуральное число к (первое число последовательности)  =');
readln(k);
until k>0;
a1:=k;
clrscr;
writeln(a1);
for i:=2 to n do
 begin
  ai:=2*a1-1;
    a1:=ai
 end;
writeln('an=',ai);
k:=0;
while(ai>0)and(k=0) do
if ai mod 10=7 then k:=1
else ai:=ai div 10;
if k=1 then write('В числе есть цифра  7')
else write('В числе нет цифры 7');readln
end.
avatar54 вне форума Ответить с цитированием
Старый 07.06.2017, 20:30   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
Как сделать что бы m-й член последовательности был задан в массиве, например не меньше 1 и не больше 10000
Зачем? Массив здесь и даром не нужен. А что касается 10000, то загнул сильно. Тут экспоненциальный рост членов последовательности. Это рекуррентное соотношение легко переводится в такой вид: am = 2^(m-1)*(k-1)+1, прикинь 2 в степени 9999
Для относительно не больших m и цикла не нужно, просто:
Код:
var a: Int64;
...
  k:=4; m:=40;
  a:=(Int64(1) shl (m-1))*(k-1)+1;
Когда же m близко к 64 и больше начнется морока с длинной арифметикой

PS семерку можно и без цикла искать, преобразуй в строку и функция pos
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 07.06.2017 в 20:43.
Аватар вне форума Ответить с цитированием
Старый 08.06.2017, 13:41   #3
avatar54
Пользователь
 
Регистрация: 21.02.2017
Сообщений: 29
По умолчанию

мне нужно сделать так, что бы можно было установить границы ai , а если число выходит за эти границы - вывести это в программе
avatar54 вне форума Ответить с цитированием
Старый 08.06.2017, 14:00   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от avatar54 Посмотреть сообщение
мне нужно сделать так, что бы можно было установить границы ai , а если число выходит за эти границы - вывести это в программе
ну, для LongInt можно попробовать так:

Код:
const half_max_longint = 2147483647 div 2;
.....

for i:=2 to n do
 begin
    if a1>half_max_longint  then begin
        WriteLn('Всё, достигли предела значности!'); Break; end;
    ai:=2*a1-1;
    a1:=ai
 end;

p.s.а ещё, судя по документации, в FP есть тип QWord,
он вмещает числа намного больше!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 08.06.2017, 22:34   #5
avatar54
Пользователь
 
Регистрация: 21.02.2017
Сообщений: 29
По умолчанию

нужно именно через массив
avatar54 вне форума Ответить с цитированием
Старый 08.06.2017, 23:24   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от avatar54 Посмотреть сообщение
нужно именно через массив
ну делайте через массив, я не против.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 09.06.2017, 20:03   #7
avatar54
Пользователь
 
Регистрация: 21.02.2017
Сообщений: 29
По умолчанию

я тоже не против, вот только что то не получается ))
avatar54 вне форума Ответить с цитированием
Старый 09.06.2017, 21:30   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от avatar54 Посмотреть сообщение
я тоже не против, вот только что то не получается ))
а для чего в этой задаче нужен массив сможете объяснить?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 11.06.2017, 23:36   #9
avatar54
Пользователь
 
Регистрация: 21.02.2017
Сообщений: 29
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
а для чего в этой задаче нужен массив сможете объяснить?
для того что бы можно было задавать максимальное значение ai, и если оно выходит за пределы - вывести это в программе
avatar54 вне форума Ответить с цитированием
Старый 12.06.2017, 03:25   #10
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от avatar54 Посмотреть сообщение
для того что бы можно было задавать максимальное значение ai, и если оно выходит за пределы
чтобы получать текущее значение Ai массив не нужен.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Найти первые n членов, их сумму,найти первый член заданной последовательности больше заданного числа L и указать его номер. ВолДим Помощь студентам 1 26.01.2016 18:51
Дан первый член и разность арифметической прогрессии, найти член прогрессии с номером n nomin Помощь студентам 2 06.12.2014 16:43
Найти m-й член последовательности / Pascal ABC Veronika_13 Помощь студентам 1 07.07.2014 19:28
Вычислить N-й член последовательности(Turbo Pascal) siato Помощь студентам 1 27.11.2013 21:33
Найти первый отрицательный член последовательности cos(ctg(n)), n=1, 2, 3, …. (Delphi) shablakov Помощь студентам 1 24.06.2013 17:13