
- •Глава 2 Условия, выбор и циклы
- •Структура условия
- •Структура множественного выбора
- •Конструкция цикла for
- •Цикл с предусловием
- •Цикл с постусловием
- •Типовые примеры
- •Подсчет суммы цифр в числе
- •Анализ четности пары чисел
- •Построение треугольников из отрезков
- •Подсчет по условию
- •Возможность построения прямоугольного треугольника
- •Представление слова с учетом падежа
- •Формирование таблицы стоимости товаров
- •Поиск чисел
- •Анализ чисел
Анализ чисел
С клавиатуры вводится четырехзначное число. Необходимо программно с использованием оператора цикла определить, имеются ли в нем четные цифры. Разработка представлена в листинге 2.26, а блок-схема алгоритма приведена на рис. 2.19.
Листинг 2.26. Поиск чисел по условию
#include <iostream>
using namespace std;
#include <conio.h>
#include <math.h>
void main()
{
int A,B,Flag,I;
cout <<"Введите четырехзначное число:";
cin>>A;
Flag=0;
for (I=1; I<=4;I++)
{
B= A % 10;
if ((B % 2) == 0)
{
Flag=1;
break;
}
A=A / 10;
}
if (Flag == 1)
cout <<"В числе есть четные цифры";
else
cout <<"В числе нет четных цифр";
_getch();
}
Рис. 2.19. Блок-схема к программе листинга 2.26
Рассмотрим еще один пример на тему анализа чисел. Как и в предыдущей разработке, с клавиатуры вводится четырехзначное число. Необходимо программно с использованием оператора цикла определить, имеются ли в нем соседние одинаковые цифры (одинаковые цифры в соседних разрядах). Разработка представлена в листинге 2.27, а блок-схема алгоритма на рис. 2.20.
Рис. 2.20. Блок-схема к программе листинга 2.27
Листинг 2.27. Анализ на наличие одинаковых цифр
#include <iostream>
using namespace std;
#include <conio.h>
#include <math.h>
void main()
{
int A,B,C,Flag,I;
cout <<"Введите четырехзначное число:";
cin>>A;
Flag=0;
for (I=1;I <= 3; I++)
{
B= A % 10;
C= (A % 100) / 10 ;
if ( B == C)
{
Flag=1;
break;
}
A=A / 10;
}
if (Flag == 1)
cout <<"В числе есть соседние одинаковые цифры";
else
cout <<"В числе нет соседних одинаковых цифр";
_getch();
}
В следующем примере с клавиатуры вводится шестизначное число. Необходимо определить, является ли оно "счастливым". Напомним, что "счастливыми" считаются числа, у которых сумма первых трех цифр равна сумме вторых трех цифр. Разработка представлена в листинге 2.28, а блок-схема алгоритма на рис. 2.21.
Листинг 2.28. Анализ на счастливое число
#include <iostream>
using namespace std;
#include <conio.h>
#include <math.h>
void main()
{
long A;
int B,C,I;
cout <<"Введите шестизначное число:";
cin>>A;
B=0;
for (I=1; I<= 3; I++)
{
B= B + (A % 10);
A= A / 10;
}
C=0;
for (I=1; I<= 3; I++)
{
C= C+ (A % 10);
A=A / 10;
}
if (B == C)
cout <<"Число счастливое";
else
cout <<" Число не является счастливым";
_getch();
}
Рис. 2.21. Блок-схема к программе листинга 2.28
В следующем примере с клавиатуры вводится целое число (для определенности содержащее не более 7 знаков). Необходимо определить максимальную цифру в этом числе. Разработка представлена в листинге 2.29, а блок-схема алгоритма на рис. 2.22.
Рис. 2.22. Блок-схема к программе листинга 2.29
Листинг 2.29. Поиск максимальной цифры в числе
#include <iostream>
using namespace std;
#include <conio.h>
#include <math.h>
void main()
{
long A,I;
int B;
cout <<"Введите число:";
cin>>A;
B=0;
I=A;
while(I > 0)
{
if((I % 10) > B )
B= I % 10;
I= I / 10;
}
cout <<"Максимальная цифра в числе равна"<<B;
_getch();
}
С клавиатуры вводится целое число (для определенности не более 7 знаков и не менее двух). Необходимо определить две максимальные (различные) цифры в этом числе. Например, если введено число 567 374, то две максимальные цифры — это 7 и 6. Разработка представлена в листинге 2.30.
Листинг 2.30. Поиск двух максимальных цифр в числе
#include <iostream>
using namespace std;
#include <conio.h>
#include <math.h>
void main()
{
long A,I;
int B,C;
cout <<"Введите число:";
cin>>A;
B=0;
I=A;
while ( I>0 )
{
if ((I % 10) > B)
B= I % 10;
I= I / 10;
}
C=0;
I=A;
while ( I>0 )
{
if (((I % 10) > C) && ((I % 10) != B))
C= I % 10;
I= I / 10;
}
cout <<"'Максимальные цифры в числе "<<B<<" "<<C;
_getch();
}