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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.11.2008, 17:53   #1
C-Jay
Пользователь
 
Аватар для C-Jay
 
Регистрация: 08.11.2008
Сообщений: 19
Восклицание цифра, которая находится в k-той позиции последовательности

Дано натуральное k от 1 до180. Написать программу для определения цифры, которая находится в k-той позиции последовательности
10111213.......9899
C-Jay

Последний раз редактировалось C-Jay; 08.11.2008 в 18:04. Причина: нет
C-Jay вне форума Ответить с цитированием
Старый 08.11.2008, 19:04   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

вариант 1
основан на том, что все числа в последовательности двухзначные.
Код:
var 
  k,i : integer;
  s : string;
begin
 Write(' Введите k: ');
 readln(k);
 
 {сначала нужно получить двухзначное число }
 i := 10 + (k-1) div 2;
 str(i:2, s);
 if odd(k) then WriteLn(s[1])
 else WriteLn(s[2]);
 readln;
end.
вариант 2. без ограничения на количество чисел и их длину (через перебор):

Код:
var 
  k,i,m,LenAll : integer;
  s : string;
begin
 Write(' Введите k: ');
 readln(k);

 LenAll := 0;
 i:=9;

 while LenAll<k do begin
   inc(i);
   Str(i:1, s);
   if (LenAll+Length(S))>=k then
   begin
     m := k - LenAll;
     WriteLn(k:1,'-я цифра = ',Copy(S,m,1));
   end;  
   LenAll := LenAll+Length(S);
 end;
 readln;
end.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 08.11.2008, 20:42   #3
zxs
 
Регистрация: 08.11.2008
Сообщений: 4
По умолчанию

вариант 3.

Решение в одну формулу. Не самое наглядное, но экономичное.

На входе k:integer - позиция, на выходе z:integer - цифра.

Код:
     z:=((k-1) mod 2)*((k-1) mod 20) div 2+(k mod 2)*((k div 20)+1);
zxs вне форума Ответить с цитированием
Старый 08.11.2008, 23:35   #4
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Ну и я свою лепту внесу. Решение по сути дудлирует вариант 3, но в более понятном виде, кроме того писал кому-то с пояснениями, чего добру пропадать.
Обратите внимание, что на нечетных позициях стоят десятки, цифра которых меняется через 20 позиций. Поэтому если мы возьмем целую часть от деления номера позиции на 20 и прибавим 1, получим нужную цифру. От (10 до 19) div 20=0 +1=1, от 20 до 29 div 20=1 +1=2, от 160 до 179 div 20=8 +1=9.
На четных позициях стоят единицы. На местах, кратных 20 находятся цифры 9, иначе цифра определяется как остаток от деления на 20, деленный на 2 -1, например при к=6 цифра= 6 mod 20=6 div 2 =3-1=2 (это единицы от числа 12).
Код:
uses crt;
var k,c:byte;
begin
clrscr;
repeat    {вводим число к с проверкой правильности ввода}
write('Vvedite k=[1,180] k=');
readln(k);
until (k>=1)and(k<=180);
if odd(k) then c:=k div 20+1 {если к-нечетное}
else if k mod 20=0 then c:=9 else{если четное и кратно 20}
c:=k mod 20 div 2 -1; {четное и не кратно 20}
write('Cifra #',k,'=',c);
readln
end.
puporev вне форума Ответить с цитированием
Старый 09.11.2008, 10:48   #5
C-Jay
Пользователь
 
Аватар для C-Jay
 
Регистрация: 08.11.2008
Сообщений: 19
По умолчанию

Спасибо!!!!!
А Кто нить может на QBasic решение показать
C-Jay
C-Jay вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как в TWebBrowser узнать адрес ссылки которая находится под курсором мышки SeRhy Общие вопросы Delphi 0 10.08.2008 10:11
по нажатию на кнопку вызвать другой фаил с расширением exe который находится в той же папке 1234 Общие вопросы Delphi 3 05.08.2008 12:32
наименьшая цифра числа в delphi SALOmandra Помощь студентам 2 22.04.2008 15:57
последняя ненулевая цифра факториала Пашка Помощь студентам 6 04.04.2008 23:39