Составить программу , печатающую для данного натурального числа...

Azarduh

Составить программу , печатающую для данного натурального числа k-ую цифру последовательности: 12345678910..., в которой выписаны подряд все натуральные числа.я не могу понять смысл данной задачи, как есть выписал с книги, что именно надо тут сделать, как связанны данное (вводимое число ) и k-ая цифра? Буду благодарен за помощь.
14 ответов

Azarduh

я так понял вводить с клавиатуры число и из последовательности 1234567981011121314151617181920212223242526272829... выбрать к-ую цифру например ввели 12 прога должна выписать 1


Azarduh

если так понимать, то получается , что вводимое число и число k одно и тоже. А как будет выглядеть программа в том варианте который вы предложили?


Azarduh

ты знаешь в чем разница между цифрой и числом??
для данного натурального числа k-ую цифру последовательности
не будут они равны (исключение первые 9 членов последовательности) можно сделать так выпиши все числа от одного до 1000 *убейся))* загадай число и посчитай какая циферка будет стоять на "загаданное цисло" месте не знаю поищи в архиве вроде подбная была


Azarduh

Саму последовательность вводить не надо. Простая задача, надо просто в цикле перебирать числа, выделять из них цифры и поставить счётчик. Когда на счётчике будет k напечатать выделенную цифру. Например, k=16 Перебираем числа 1,2,3,4,5,6,7,8,9,10,11,12,13.... выделяем из них все цифры и считаем их количество: 1,2,3,4,5,6,7,8,9, 1, 0, 1, 1, 1, 2, 1 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16 оп - досчитали до 16, ответ=1


Azarduh

может и простая, но все таки не могу понять принцип её решения, если нетрудно напишите решение , код.


Azarduh

Ну, пошевели мозгами-то, план я тебе написал, вот и выполняй его по пунктам, там всего-то два цикла DO LOOP один в другом


Azarduh

кот Бегемот, я уже сколько не могу сделать эту задачу, как же так создать цикл для выделения всех цифр, какова закономерность.


Azarduh

Саму последовательность вводить не надо. Простая задача, надо просто в цикле перебирать числа...
А смысл делать цикл для того чтобы найти k-тый символ арифметической прогрессии? Помойму задача на одну мат формулу и все - если я конечно правильно ее понял).Если бы прогрессия была поинтереснее мне бы был понятен смысл задачи. Но в данной каждое значение n-ого члена соответствует самому номеру этого члена.. т.е. 1=1, 2=2...48=48...n=n Или я не понял задачи или тут глупость) А для "правильной" АП можно так напимер:
CLS
DIM a1 AS INTEGER, d AS INTEGER, an AS INTEGER, n AS INTEGER
 
INPUT "Vvedite Perviy Chlen AP: "; a1
INPUT "Vvedite Raznost AP (d): "; d
INPUT "Vvedite Chislo AP (dlya kotorogo iw'etsia k): "; an
 
n = ((an - a1) / d) + 1
PRINT n
Долго думая))
Перебираем числа 1,2,3,4,5,6,7,8,9,10,11,12,13.... выделяем из них все цифры и считаем их количество: 1,2,3,4,5,6,7,8,9, 1, 0, 1, 1, 1, 2, 1 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16 оп - досчитали до 16, ответ=1
Разобрать новые члены АП дело не хитрое, но разве там об этом.. ээКак вообще можно это можно понимать..
k-ую цифру последовательности в которой выписаны подряд все натуральные числа
как вообще в АП из натур. чисел могут быть не натуральные.. Там вообще все натуральное и к номера и разность АП.


Azarduh

Aye73x, вы просто неправильно понялы смысл задачи. Ведь Кот Бегемот объясняет смыл, суть, почитайте. Вот пример. дана последовательность 123456789101112131415, и число к=15. Надо цифру находить на 15-том месте, считаем, это цифра 2. если к= 17, то выводиться должна цифра 3.


Azarduh

Azarduh, понятно ща тогда сделаю.. там все тогда элементарно. Кофе попью и напишу


Azarduh

CLS
INPUT "vvedite k"; k
DO
    i = i + 1
    a = i: b = 0
    DO
        b = b + 1: s = s + 1
        a = a \ 10
    LOOP UNTIL a = 0 OR s = k
LOOP UNTIL s = k
PRINT MID$(LTRIM$(STR$(i)), b, 1)
или
CLS
INPUT "vvedite k"; k
DO
    i = i + 1
    a$ = a$ + LTRIM$(STR$(i))
LOOP UNTIL LEN(a$) >= k
PRINT a$
PRINT MID$(a$, k, 1)


Azarduh

softmob, а если длина строки будет больше 255?


Azarduh

Вчера не пошло.. утро - мудренее))
CLS
DIM AP AS INTEGER, summ AS INTEGER
DIM Z AS SINGLE, NS AS LONG, x AS LONG
DEFINT A-W
 
x = 0: AP = 0
INPUT "Vvedine # Simvola AP: "; NS
 
DO
    AP = AP + 1
    Z = AP
    j = 0
 
    DO WHILE INT(Z) >= 1
        j = j + 1 'znakov v chisle
        Z = Z / 10
    LOOP
 
    FOR i = j TO 1 STEP (-1)
        a = ((AP MOD 10 ^ i) - (AP MOD 10 ^ (i - 1))) / 10 ^ (i - 1)
        x = x + 1
        PRINT a; x
        IF (x = NS) THEN EXIT FOR
    NEXT i
 
LOOP WHILE x <> NS
 
PRINT
PRINT x; "Simvolom AP Yavliaetsia: "; a
ЗЫ.. все достаточно топорно и по логике вещей должно быть ОК
softmob, а если длина строки будет больше 255?
Тоже приходила идея в строку собирать, но в виду ограничения в 255, решил ограничиться диап. значений LONG'а, 2147483647-ой символ не дождался


Azarduh

softmob, а если длина строки будет больше 255?
для этого есть 1 вариант программы.
CLS
DEFLNG A-Z
INPUT "vvedite k"; k
DO
    i = i + 1
    a = i: b = 0
    DO
        b = b + 1: s = s + 1
        a = a \ 10
    LOOP UNTIL a = 0 OR s = k
LOOP UNTIL s = k
PRINT MID$(LTRIM$(STR$(i)), b, 1)