Пример 2
Найти все натуральные числа, не превосходящие заданного N и равные сумме кубов его цифр.
При разработке алгоритма программы перечислим объекты, необходимые для решения данной задачи:
· N – заданное пользователем число. Ограничим его значением, максимально-допустимым форматом int, т.е. значением 32766. Однако чтобы выполнить проверку на ограничение, объявим его как unsigned int;
· u – текущее натуральное число, не превосходящее N. Из этого числа выделим цифры, каждую из которых возведем в куб и найдем сумму кубов;
· mas[5] – создадим массив из пяти элементов (максимальное число 32766 имеет пять разрядов) для хранения каждой цифры числа u. Объявим его как int;
· b – текущий номер цифры числа u при их выделении. Нумерация начинается с нуля, количество цифр числа u равно: b – 1. Объявим ее как int;
· sum – переменная, где ведется расчет суммы кубов цифр mas[i]. При обращении к ней необходимо её инициализировать нулем. Примем тип переменной – int;
· i – индексная переменная, изменяемая от 0 до b. Имеет тип int.
Алгоритм решения этой задачи следующий:
1) запрашивается значение числа N и проверяется его диапазон. Если N больше допустимого, то запрос повторяется;
2) организуется цикл переменной u от 1 до N;
3) расписываются цифры числа u в обратном порядке в массив mas ( в mas[0] – младший разряд, mas[b] – старший);
4) подсчитывается сумма кубов всех цифр, записанных в mas[0]-mas[b] в поле sum;
5) выполняется сравнение (u==sum). Если переменные равны, то выводятся результаты на печать, в противном случае меняется число u (u=u+1).
Программа для нашего примера на языке С будет иметь вид:
// Пример 2: Циклы for, while, структурное программирование
#include<stdio.h>
#include<math.h>
Void main(void)
{
unsigned int N;
int u,b,sum,i,mas[5];
For(;;)
{
printf("\nУкажите значение N (меньше 32766) > ");
scanf("%d",&N);
if(N<32766) break;
}
for(u=1;u<=N;u++)
{
b=0; mas[b]=u;
while(mas[b]>=10)
{
mas[b+1]=mas[b]/10;
mas[b++]=mas[b]%10;
}
sum=0;
for(i=0;i<=b;i++) sum+=pow(mas[i],3);
if(u==sum) printf("\nПриu=%dсумма кубов цифр равна=%d",u,sum);
}
}
Задание на лабораторную работу 5
РАЗРАБОТКА ПРОГРАММЫ СО СТРУКТУРОЙ «РАЗВИЛКА»