Помощь - Поиск - Пользователи - Календарь
Полная версия: Функция
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
@SNAKE@
Люди помогите пожайлуста решить эту задачу или хотябы объясните что делать с суммой К=1,2...Заранее всем спасибо
Описать функцию, которая возвращает сумму К=1,2,… наименьших цифр, входящих в запись числа типа Longint .
klem4
пусть дано число N = 14021233, K = 3

результат = 0 + 1 + 1 = 2 ?
@SNAKE@
а почему к=3
Malice
Цитата(@SNAKE@ @ 12.11.2007 19:02) *

а почему к=3

Для примера smile.gif
А вообще, можно поступить так - перевести число в строку, отсортировать символы по возрастанию, сложить К первых символов, переведя каждое в число (ord(s[i])-$30).
@SNAKE@
а зачем переводить каждое в число (ord(s[i])-$30).
Malice
Чтоб сложить.. Я имел ввиду вот это:
N = 14021233, K = 3
переводим в строку: s:="14021233";
сортируем: s:="01122334";
складываем: 0+1+1. Но что бы из "0" получить 0 надо из кода символа вычесть $30 (код нуля как раз).

Но если не хочешь через строку можно и по-другому.. Например завести массив [0..9], разложить число на цифры и посчитать количество каждой цифры с помощью этого массива. Примерно так:

var  a:array [0..9] of byte;
..
begin
x:=14021233; k:=3;
while x>0 do
begin
inc (a[x mod 10]); x:=x div 10;
end;

Потом пройтись за 1 проход по массиву и сложить нужной колво чисел smile.gif
@SNAKE@
у меня тут возникло несколько вопросов
1)масив берётся произвольно или нет
2)x и k берутся произвольно или нет
Malice
Цитата(@SNAKE@ @ 12.11.2007 22:30) *

у меня тут возникло несколько вопросов
1)масив берётся произвольно или нет
2)x и k берутся произвольно или нет

1) который ? Вспомогательный ? Нет, он заполняется по введенному Х.
2) скорее всего с клавиатуры их вводить надо.
@SNAKE@
вот про этот масив var a:array [0..9] of byte;
Malice
Цитата(@SNAKE@ @ 12.11.2007 22:55) *

вот про этот масив var a:array [0..9] of byte;

а ты понимаешь его назначение ? Если нет, то разберись с алгоритмом или делай по первому варианту со строкой.. Вообще он заполняется выше приведенным кодом. Но я не настаиваю на этом варианте решения, он короче, но со строкой проще.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.