Консультация № 175205
13.12.2009, 18:31
0.00 руб.
0 9 2
Добрый день,уважаемые эксперты!!!!Помогите пожалуйста с одной задачкой:
Описать функцию подсчёта количества трёхзначных натуральных чисел, сумма цифр которых равна n (1=<n<=27)

Обсуждение

Неизвестный
13.12.2009, 19:05
общий
angel.nero:
Добрый вечер! Ваш вопрос. https://rfpro.ru/question/174593
давно
Профессионал
304622
583
13.12.2009, 22:52
общий
это ответ
Здравствуйте, angel.nero.

Есть вариант покороче.

Приложение:
var i,m,n,k:integer;

begin
readln(n);

k:=0;
for i:=100 to 999 do
begin
m:=i div 100 + i mod 100 div 10 + i mod 10;
if m=n
then inc(k);
end;

writeln(k);
readln;
end.
Неизвестный
13.12.2009, 23:09
общий
Сергей Бендер:
и как она работает????мне она ничего не выдает
Неизвестный
14.12.2009, 09:00
общий
angel.nero:
Код:
program p174593;
var
n: integer;
function CalcCount2(n: Integer): Integer;
var
i, j, k: Integer;
count: Integer;
begin
count := 0;
for i:= 1 to 9 do
for j:= 0 to 9 do
for k:= 0 to 9 do
if i+j+k = n then inc(count);
CalcCount2 := count
end;

begin
write('n=');
readln(n);
if not (n in [1..27]) then
writeln('количество чисел, с суммой цифр ', n, ' равно 0')
else
writeln('количество чисел, с суммой цифр ', n, ' равно ', CalcCount2(n));
readln;
end.

Неизвестный
14.12.2009, 09:05
общий
Сергей Бендер:
Ваш вариант (как и мой) не универсальные. Решается задача только для трехзначных чисел.
давно
Профессионал
304622
583
14.12.2009, 16:03
общий
leonid59:
Цитата: 300647

Ваш вариант (как и мой) не универсальные. Решается задача только для трехзначных чисел.


Так постановка задачи именно такова.

Что я не сделал -- это не выделил расчёт в отдельную функцию. Хм-м.
давно
Профессионал
304622
583
14.12.2009, 16:11
общий
leonid59:
Цитата: 300647
Ваш вариант (как и мой) не универсальные. Решается задача только для трехзначных чисел.


Ваш вариант лучше. У меня тратится лишнее время на вычисление mod и div.
давно
Профессионал
304622
583
14.12.2009, 16:20
общий
angel.nero:
Цитата: 309917
и как она работает???? мне она ничего не выдает


Если честно, не понял о чём речь. О том, что сразу после запуска (Ctrl-F9) ничего на экране не появляется? Программа ждёт ввода числа и нажатия Enter.
давно
Академик
320937
2216
16.12.2009, 11:33
общий
это ответ
Здравствуйте, angel.nero. Ответ в приложении. Turbo Pascal 7. Недостатки: неуниверсальная, не самая быстрая.

Приложение:
program p174593;
var
n: integer;
numbers: integer;
function min(a,b:integer): integer;
begin
if a<b then min := a else min := b;
end;

function CalcCount3(n: Integer): Integer;
var
i, j: integer;
ostatok1, ostatok2, ostatok3: integer;
count: integer;
iter: integer;
begin
count := 0;
iter := 0;
ostatok1 := n;
for i:= 1 to min(9, ostatok1) do
begin
ostatok2 := ostatok1-i;
if ostatok2<=2*9 then
begin
for j:= 0 to min(9,ostatok2) do
begin
ostatok3 := ostatok2-j;
inc(iter);
if ostatok3<=9 then
begin
write(i,j,ostatok3, ';');
inc(count);
end;
end;
end;
end;
writeln;
writeln('Число итераций=', iter);
CalcCount3 := count;
end;

begin
write('n=');
readln(n);
if not (n in [1..27]) then
writeln('количество чисел, с суммой цифр ', n, ' равно 0')
else
begin
numbers := CalcCount3(n);
writeln('количество чисел, с суммой цифр ', n, ' равно ', numbers);
end;
readln;
end.
Форма ответа