- •Глава 2 Условия, выбор и циклы
- •Структура условия
- •Структура множественного выбора
- •Конструкция цикла for
- •Цикл с предусловием
- •Цикл с постусловием
- •Типовые примеры
- •Подсчет суммы цифр в числе
- •Анализ четности пары чисел
- •Построение треугольников из отрезков
- •Подсчет по условию
- •Возможность построения прямоугольного треугольника
- •Представление слова с учетом падежа
- •Формирование таблицы стоимости товаров
- •Поиск чисел
- •Анализ чисел
Типовые примеры
Далее мы разберем ряд практических примеров, которые можно отнести к использованию уже рассмотренных конструкций.
Подсчет суммы цифр в числе
Требуется разработать алгоритм подсчета суммы цифр в целом положительном числе, представленном в десятичной системе счисления. Например, в числе 351210сумма цифр равна 1110, что определяется с помощью простого суммирования. Нам необходимо построить алгоритм, который будет автоматически выполнять указанное действие.
Вместе с разработкой алгоритма требуется написать программу, которая должна выполнять данную процедуру с целым числом, вводимым с клавиатуры.
Идея решения задачи заключается в использовании целочисленного деления и вычисления остатка от целочисленного деления. Так, если мы возьмем остаток деления исходного числа на 10, то получим самую младшую цифру исходного числа. Далее следует исходное число разделить на 10 и опять вычислить остаток от деления полученного результата на 10. В результате мы получим цифру, расположенную в разряде десятков исходного числа. Этот процесс следует продолжать до тех пор, пока результатом деления на 10 не окажется ноль. Для лучшей иллюстрации сказанного рассмотрим рис. 2.15, где представлена блок-схема алгоритма. Она соответствует словесному описанию механизма получения суммы цифр. Теперь алгоритм можно реализовать в виде программы (листинг 2.15). Здесь, учитывая блок-схему, мы воспользовались знакомым циклом с предусловием.
Листинг 2.15. Программа подсчета суммы цифр в десятичном числе
#include <iostream>
using namespace std;
#include <conio.h>
#include <math.h>
void main()
{
int N,A,Summa;
cout << "Введите целое число";
cin >> N;
Summa=0;
while (N > 0)
{
A= N % 10;
Summa= Summa+A;
N= N / 10;
}
cout << "/nSumma="<<Summa;
_getch();
}

Рис. 2.15. Блок-схема к программе листинга 2.15
Анализ четности пары чисел
Требуется написать программу, которая определяет, имеется ли среди введенных с клавиатуры целых чисел AиBхотя бы одно четное. Вариант реализации требуемого алгоритма представлен в листинге 2.16. Здесь мы сначала вычисляем остатки от деления двух исходных чисел на 2. Если оба этих остатка равны единице, то, следовательно, среди введенных чисел четных нет. В противном случае имеется хотя бы одно четное число.
Листинг 2.16. Проверка наличия четных чисел
#include <iostream>
using namespace std;
#include <conio.h>
#include <math.h>
void main()
{
int A,B;
cout << "Введите целое число A ";
cin >> A;
cout << "Введите целое число B ";
cin >> B;
A= A % 2;
B= B % 2;
A= A + B;
if ( A == 2)
cout << "Четных чисел нет";
else
cout << "Четное число есть";
_getch();
}
Реализуем еще один вариант решения, который связан с разработкой программы, использующей логическое ИЛИ. В этом случае (листинг 2.17) вместо арифметического сложения остатков от деления используется логическая операция —дизъюнкция. А именно: вычисляется дизъюнкция условий равенства нулю остатков от деления исходных чисел на 2. Если хотя бы один остаток от деления равен нулю, то на экран будет выведено соответствующее сообщение о наличии четных чисел.
Листинг 2.17. Вариант алгоритма с использованием дизъюнкции
#include <iostream>
using namespace std;
#include <conio.h>
#include <math.h>
void main()
{
int A,B;
cout << "Введите целое число A ";
cin >> A;
cout << "Введите целое число B ";
cin >> B;
A= A % 2;
B= B % 2;
if ((A == 0)|| (B == 0))
cout << "Четное число есть";
_getch();
}
