//pascalabc.net версия 3.4.0.1677 от 17.06.18
//если программа не запускается, то обновите версию
begin
var answer : = 1;
var sum : = random(100, 500);
repeat
if sum > 30 then
begin
if random(100) mod 2 = 0 then begin
println('[куплена шоколадка]');
sum -= 45;
end
else begin
println('[куплен сок]');
sum -= 56;
end;
if sum < 40 then begin
answer : = readinteger('на карте меньше 40! 1-пополнить на 300р; 0-пропустить');
if answer > 0 then sum += 300;
end
end;
if sum < = 30 then
begin
answer : = readinteger('карта ! 1-пополнить на 300р; 0-пусть голодает');
if answer > 0 then sum += 300;
end;
sleep(200);
until (answer = 0) and (sum < = 30)
end.
Поделитесь своими знаниями, ответьте на вопрос:
Составить блок-схему и пррграмму вычисления значения ввражения f.
#ruby 2
def getnumberbyposition(start_num, end_num, k, n = 3)
# p [start_num, end_num, k, n]
if not start_num.between? (10**(n - 1),10**n - 1) or not end_num.between? (10**(n - 1),10**n - 1) then return end
s = ""
for i in start_num..end_num
s += i.to_s()
end
number = start_num + (k-1) / n
if number > end_num
puts "выход за пределы"
return
end
# p number
upper_limit = n + 1 - ((k % n == 0) ? n : k % n)
number = number % (10**upper_limit)
# p [number, 10**upper_limit, upper_limit]
low_limit = upper_limit - 1
number = number / (10**low_limit)
# p [number, 10**low_limit, low_limit]
puts "#{number} = #{s[k-1]}"
end
getnumberbyposition(101,150,20,3)
getnumberbyposition(101,150,21,3)