Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Функция

Автор: @SNAKE@ 12.11.2007 20:20

Люди помогите пожайлуста решить эту задачу или хотябы объясните что делать с суммой К=1,2...Заранее всем спасибо
Описать функцию, которая возвращает сумму К=1,2,… наименьших цифр, входящих в запись числа типа Longint .

Автор: klem4 12.11.2007 22:51

пусть дано число N = 14021233, K = 3

результат = 0 + 1 + 1 = 2 ?

Автор: @SNAKE@ 12.11.2007 23:02

а почему к=3

Автор: Malice 12.11.2007 23:39

Цитата(@SNAKE@ @ 12.11.2007 19:02) *

а почему к=3

Для примера smile.gif
А вообще, можно поступить так - перевести число в строку, отсортировать символы по возрастанию, сложить К первых символов, переведя каждое в число (ord(s[i])-$30).

Автор: @SNAKE@ 12.11.2007 23:47

а зачем переводить каждое в число (ord(s[i])-$30).

Автор: Malice 13.11.2007 0:05

Чтоб сложить.. Я имел ввиду вот это:
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@ 13.11.2007 2:30

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

Автор: Malice 13.11.2007 2:48

Цитата(@SNAKE@ @ 12.11.2007 22:30) *

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

1) который ? Вспомогательный ? Нет, он заполняется по введенному Х.
2) скорее всего с клавиатуры их вводить надо.

Автор: @SNAKE@ 13.11.2007 2:55

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

Автор: Malice 13.11.2007 3:10

Цитата(@SNAKE@ @ 12.11.2007 22:55) *

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

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