Вопрос № 183373: Уважаемые эксперты! Уважаемый lamed (Академик) помогите мне решить задачи как в предыдущей теме! Вот задачи: 1) Даны натуральные числа K и N. Составить программу формирования массива А, элементами которого являются числа, сумма цифр кот...
Вопрос № 183373:
Уважаемые эксперты! Уважаемый lamed (Академик) помогите мне решить задачи как в предыдущей теме! Вот задачи:
1) Даны натуральные числа K и N. Составить программу формирования массива А, элементами которого являются числа, сумма цифр которых равна К и кото-рые не больше N.
2) Подсчитать количество цифр в заданном натуральном числе.
Задание 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.
Удачи!
Ответ отправил: lamed (Академик)
Ответ отправлен: 27.05.2011, 19:13
Номер ответа: 267411 Россия, Ковров Тел.: +79107793141
Оценка ответа: 5
Вам помог ответ? Пожалуйста, поблагодарите эксперта за это! Как сказать этому эксперту "спасибо"?
Отправить SMS#thank 267411
на номер 1151 (Россия) |
Еще номера »
Оценить выпуск »
Нам очень важно Ваше мнение об этом выпуске рассылки!
* Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи.
(полный список тарифов)
** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
*** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.