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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.10.2008, 12:09   #1
svobodys
Пользователь
 
Регистрация: 07.10.2008
Сообщений: 42
По умолчанию Помогите пожалуйста с программой на паскале.

Написать программу

Дано натуральное (К), определить (К-ю) цифру в последовательности
1101001000100010000....
svobodys вне форума Ответить с цитированием
Старый 11.10.2008, 13:36   #2
alexBlack
Участник клуба
 
Регистрация: 12.10.2007
Сообщений: 1,204
По умолчанию

Цитата:
Сообщение от svobodys Посмотреть сообщение
Написать программу

Дано натуральное (К), определить (К-ю) цифру в последовательности
1101001000100010000....
нолик не пропущен ?
не такая последовательность ?:
1 10 100 1000 10000 100000 1000000

Если да, то последовательно вычитать из К числа натурального ряда пока это возможно. По остатку определить цифру в позиции K.
alexBlack вне форума Ответить с цитированием
Старый 11.10.2008, 13:42   #3
svobodys
Пользователь
 
Регистрация: 07.10.2008
Сообщений: 42
По умолчанию

а да, опечатался
такая последовательность
1 10 100 1000 10000 100000 1000000
svobodys вне форума Ответить с цитированием
Старый 11.10.2008, 13:53   #4
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Цитата:
Если да, то последовательно вычитать из К числа натурального ряда пока это возможно. По остатку определить цифру в позиции K.
Наверное надо сделать оговорку if k=1 then x:=1 else ....
puporev вне форума Ответить с цитированием
Старый 11.10.2008, 14:14   #5
AVer
Андрей
Форумчанин
 
Аватар для AVer
 
Регистрация: 21.11.2006
Сообщений: 457
По умолчанию

Код:
Function Power(N,P:Integer):LongInt;
Var I:Integer;
Begin
For I:=1 To P-1 Do
N:=N*N;
Power:=N;
End;

Function Func(K:Integer):String;
Var I,N,J:Integer;
    S:String;
Begin
J:=1;
N:=1;
I:=0;
While J < K Do
 Begin
 Inc(I);
 J:=I+1;
 K:=K-J+1;
 End;
I:=Power(10,I);
Str(I,S);
Func:=S[K];
End;
ICQ: 5311314
[SIGPIC][/SIGPIC]
AVer вне форума Ответить с цитированием
Старый 11.10.2008, 15:50   #6
alexBlack
Участник клуба
 
Регистрация: 12.10.2007
Сообщений: 1,204
По умолчанию

Цитата:
Сообщение от puporev Посмотреть сообщение
Наверное надо сделать оговорку if k=1 then x:=1 else ....
Пожалуй. Или ограничить вычитание.

2AVer Возведение в степень в конце - это лишнее.

Код:
var j, k, n:integer;
    b:boolean;
begin
   for n := 1 to 29 do begin

      k := n;
      j := 1;
      while j < k do begin
        dec(k, j);
        inc(j);
      end;
      b := k = 1;

      if b
      then write(1)
      else write(0);

   end;
   readln;
2svobodys. Внешний цикл для проверки. Решение внутри цикла.

Последний раз редактировалось alexBlack; 11.10.2008 в 16:13.
alexBlack вне форума Ответить с цитированием
Старый 11.10.2008, 16:04   #7
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Цифры 1 занимают места 1,2,4,7,11,16,22,29 и т.д.
Думаем так: если N=1, то x=1. Начиная с 2 считаем если N-1= сумме чисел от 1 до N-1, то х=1, иначе х=0.
P.S. Мысль какая-то хорошая была, а написал глупость.

Последний раз редактировалось puporev; 11.10.2008 в 16:21.
puporev вне форума Ответить с цитированием
Старый 11.10.2008, 16:35   #8
alexBlack
Участник клуба
 
Регистрация: 12.10.2007
Сообщений: 1,204
По умолчанию

Да не, почему. С нахождением суммы - это интересно. Только не этих чисел, а натурального ряда. Тогда получается квадратное уравнение и решение просто формулой:

Код:
var j, k, n, l:integer;
    b:boolean;
begin
   for n := 1 to 50 do begin

      k := n;

      l := trunc( (sqrt(8*k+1-8)-1) /2 );
      b := k - l*(l+1) div 2 = 1;

      write(byte(b):1);
      //if b
      //then write(1)
      //else write(0);

   end;
   readln;

Последний раз редактировалось alexBlack; 11.10.2008 в 16:42.
alexBlack вне форума Ответить с цитированием
Старый 11.10.2008, 16:38   #9
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Да я и имел ввиду натуральный ряд (1+2=3+1=4; 1+2+3=6+1=7), Сейчас тоже эту формулу вывел, хотел попроще, но не получается.
puporev вне форума Ответить с цитированием
Старый 11.10.2008, 16:43   #10
svobodys
Пользователь
 
Регистрация: 07.10.2008
Сообщений: 42
По умолчанию

О, спасиба вам большое))
svobodys вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ГОРИТ ДИПЛОМ!!!! пожалуйста помогите разобраться с программой alexs2141 Фриланс 6 03.06.2008 20:30
Помогите,пожалуйста,с довольно простенькой программой(Delphi) o_O Помощь студентам 4 27.05.2008 11:35
помогите пожалуйста с программой Assembler Norma Помощь студентам 3 08.12.2007 12:18