Консультация № 183373
27.05.2011, 18:29
53.02 руб.
0 5 1
Уважаемые эксперты!
Уважаемый lamed (Академик) помогите мне решить задачи как в предыдущей теме!
Вот задачи:

1) Даны натуральные числа K и N. Составить программу формирования массива А, элементами которого являются числа, сумма цифр которых равна К и кото-рые не больше N.

2) Подсчитать количество цифр в заданном натуральном числе.

Обсуждение

давно
Академик
320937
2216
27.05.2011, 18:47
общий
27.05.2011, 19:00
Добрый вечер! Пока в мини-форум.
Код:
// Подсчитать количество цифр в заданном натуральном числе.
// Pascal-ABC, RFPRO, lamed, Kovrov-city, 27.05.2011
var
i,x, tmp: integer;
begin
write('Число ');
readln(x);
if x=0 then
i:=1
else
begin
i:=0;
tmp:=x;

while tmp>0 do
begin
tmp:= tmp div 10;
inc(i);
end;
end;
writeln('Количество цифр ', i);
end.


Способ "в лоб"
Код:
// Даны натуральные числа K и N. Составить программу формирования массива А,
// элементами которого являются числа, сумма цифр которых равна К и
// которые не больше N.
// Pascal-ABC, RFPRO, lamed, Kovrov-city, 27.05.2011
const
MaxN=100;
var
k,n,i,j: integer;
s,x: integer;
a: array[1..MaxN] of integer;
begin
write('K= ');
readln(k);

write('N= ');
readln(n);

j:= 0;
for i:= 1 to n do
begin
s:=0;
x:=i;
while x>0 do
begin
s:= s+x mod 10;
x:=x div 10;
end;
if s=k then
begin
j:=j+1;
a[j] := i;
end;
end;
for i:= 1 to j do
begin
write(a[i]:4);
if i mod 5=0 then
writeln;
end;
end.
давно
Академик
320937
2216
27.05.2011, 19:13
общий
это ответ
Здравствуйте, Посетитель - 372181!

Задание 1.
1. Даны натуральные числа K и N. Требуется сформировть массив А, элементами которого являются числа, сумма цифр которых равна К и которые не больше N.
Входные данные: натуральные числа K и N типа integer; выходные данные: массив A натуральных чисел типа integer; количество заполненных элементов массива j.
Ограничения: K, N, j>0; a[j]>=0;

2. Формализация.
Сумма цифр S числа X вычисляется по правилу:
S = X, если X<10;
S = X mod 10 + S(x/10) в остальных случаях.
Проверка чисел X в интервале от 1 до N проводится в цикле, сравнением суммы цифр Si с K.
Если проверка выполнена, значение i присваивается следуюшему, j-му элементу.

3. Блок-схема


4.Программа
Код:
// Даны натуральные числа K и N. Составить программу формирования массива А,
// элементами которого являются числа, сумма цифр которых равна К и
// которые не больше N.
// Pascal-ABC, RFPRO, lamed, Kovrov-city, 27.05.2011
const
MaxN=100;
var
k,n,i,j: integer;
s,x: integer;
a: array[1..MaxN] of integer;
begin
write('K= ');
readln(k);

write('N= ');
readln(n);

j:= 0;
for i:= 1 to n do
begin
s:=0;
x:=i;
while x>0 do
begin
s:= s+x mod 10;
x:=x div 10;
end;
if s=k then
begin
j:=j+1;
a[j] := i;
end;
end;
for i:= 1 to j do
begin
write(a[i]:4);
if i mod 5=0 then
writeln;
end;
end.


Задание 2.
1. Постановка задачи. Подсчитать количество цифр в заданном натуральном числе.
Входные данные: число x типа integer.
Выходные данные: число i типа integer.
Ограничения: x,i>0.

2. Формализация.
Для расчетов вводим вспомогательное число tmp. Сумма цифр вычисляется по рекуррентной формуле:
S(n)=n, если n<10 (Это условие окончания цикла)
s(n)=n mod 10 +s(n/10)

3. Блок-схема
Блок-схема


4.Программа
Код:
// Подсчитать количество цифр в заданном натуральном числе.
// Pascal-ABC, RFPRO, lamed, Kovrov-city, 27.05.2011
var
i,x, tmp: integer;
begin
write('Число ');
readln(x);
if x=0 then
i:=1
else
begin
i:=0;
tmp:=x;

while tmp>0 do
begin
tmp:= tmp div 10;
inc(i);
end;
end;
writeln('Количество цифр ', i);
end.

Удачи!
5
давно
Академик
320937
2216
27.05.2011, 19:15
общий
Здравствуйте! Оформление сделаю завтра к вечеру, возможно, еще более изящное решение появится. На сегодня устал от студентов и информатики :)
давно
Академик
320937
2216
28.05.2011, 18:36
общий
Добрый вечер! Оформление вынужден отложить еще на сутки. С уважением
давно
Академик
320937
2216
29.05.2011, 16:48
общий
29.05.2011, 16:52
Добрый вечер! Добавил описание. Конечно, сумму цифр удобней считать при помощи функции, но, боюсь, не поверят.
Форма ответа