Глава 3. Операторы управления
Рис. 3.30: Алгоритм определения количества цифр в числе.
Задача 3.17.
Дано натуральное число N. Определить, содержит ли это число
нули и в каких разрядах они расположены (например, число 11011110111 содер-
жит ноль в третьем и восьмом разрядах, а число 120405 — в первом и третьем).
Входные данные
: N — целое число.
Выходные данные
: pos — позиция цифры в числе.
Промежуточные данные
: i — параметр цикла, M — переменная для времен-
ного хранения значения N.
В связи с тем, что разряды в числе выделяются начиная с последнего, для
определения номера разряда в числе, необходимо знать количество цифр в чис-
ле
7
. Таким образом, на первом этапе решения задачи необходимо определить kol
— количество цифр в числе. Затем нужно выделять из числа цифры, если оче-
редная цифра равна нулю, вывести на экран номер разряда, который занимает
эта цифра. Процесс определения текущей цифры числа N = 120405 представлен
в таблице 3.4.
7
Алгоритм нахождения количества цифр в числе был рассмотрен в предыдущей задаче.
Программирование на языке С++ в среде Qt Creator
3.5. Решение задач с использованием циклов
79
Таблица 3.4: Определение текущей цифры числа
i
Число М
Цифра
Номер позиции
1
120405
120405 % 10 = 5
0
2
12040/10 = 1204
12040 % 10 = 0
1
3
1204/10 = 120
1204 % 10 = 4
2
4
120/10 = 12
120 % 10 = 0
3
5
12/10 = 1
12 % 10 = 2
4
6
1/10 = 0
1 % 10 = 1
5
Программный код к задаче 3.17.
#include
using namespace s t d ;
i n t main ( )
{
unsigned long i n t N,M; i n t k o l , i ;
cout<<" N = " ; c i n >>N;
f o r ( k o l =1 ,M=N;M/10 >0; k o l ++,M/=10) ;
f o r (M=N, i =0; i i f (M%10==0) cout<<"Позиция = "<return 0 ;
}
Задача 3.18.
Дано натуральное число N. Получить новое число, записав цифры
числа N в обратном порядке. Например, 17852 — 25871.
Входные данные
: N — целое число.
Выходные данные
: S — целое число, полученное из цифр числа N, записанных
в обратном порядке.
Промежуточные данные
: i — параметр цикла, M — переменная для вре-
менного хранения значения N, kol — количество разрядов в заданном числе,
R = 10
kol
— старший разряд заданного числа.
Рассмотрим пример. Пусть N = 17852, тогда S = 2 · 10
4
+ 5 · 10
3
+ 8 · 10
2
+ 7 ·
10
1
+ 1 · 10
0
= 25871.
Значит, для решения поставленной задачи, нужно знать количество разрядов
в заданном числе kol и его старший разряд R = 10
kol
. Новое число S формируют
как сумму произведений последней цифры заданного числа на старший разряд
S+ = M %10 ∗ R. Цикл выполняют kol раз, при каждой итерации уменьшая само
число и старший разряд в десять раз.
#include
using namespace s t d ;
i n t main ( )
{ unsigned long i n t N,M, R, S ; i n t kol , i ;
cout<<" N = " ; c i n >>N;
f o r (R=1 , k o l =1 ,M=N;M/10 >0; k o l ++,R∗=10 ,M/=10) ;
f o r ( S=0 ,M=N, i =1; i <=k o l ; S+=M%10∗R,M/=10 ,R/=10 , i ++) ;
cout<<" S = "<return 0 ;
}
© 2015 Алексеев Е. Р., Злобин Г. Г., Костюк Д. А., Чеснокова О. В., Чмыхало А. С.
80
Do'stlaringiz bilan baham: |