|
Символы кириллицы выводит некорректно. Как сделать чтобы выводился читабельный текст на русском языке? Тип приложения - не Qt, Qt Creator 4.5.0 основан на Qt 5.10.0. Win7.
|
Операторы управления
Задача 3.16. Дано натуральное число
. Определить количество цифр в числе.
Входные данные:
— целое число.
Выходные данные:
— количество цифр в числе.
Промежуточные данные:
— переменная для временного хранения значения
6При решении задачи (см. алгоритм на рис. 3.30) исходное число изменятся, поэтому, чтобы его, не потерять, копируем исходное число
в переменную
, и делить будем уже
.
Для того, чтобы подсчитать количество цифр в числе, необходимо определить, сколько раз заданное число можно разделить на десять нацело. Например, пусть
, тогда количество цифр
. Результаты вычислений сведены в табл. 3.3.
| kol | N |
|---|---|
| 1 | 12345 |
| 2 | 12345 / 10 = 1234 |
| 3 | 1234 / 10 = 123 |
| 4 | 123 / 10 = 12 |
| 5 | 12 / 10 = 1 |
| 1 / 10 = 0 |
Алгоритм определения количества цифр в числе представлен на рис. 3.30.
#include <iostream>
using namespace std;
int main ( )
{
unsigned long int N, M;
unsigned int kol;
cout<<" N = "; cin >>N;
for (M=N, kol =1; M/10 >0; kol ++,M/=10);
cout<<" kol = "<<kol <<endl;
return 0;
}
Задача 3.17. Дано натуральное число
. Определить, содержит ли это число нули и в каких разрядах они расположены (например, число 11011110111 содержит ноль в третьем и восьмом разрядах, а число 120405 — в первом и третьем).
Входные данные:
— целое число.
Выходные данные:
— позиция цифры в числе.
Промежуточные данные:
— параметр цикла,
— переменная для временного хранения значения
.
В связи с тем, что разряды в числе выделяются начиная с последнего, для определения номера разряда в числе, необходимо знать количество цифр в числе7Алгоритм нахождения количества цифр в числе был рассмотрен в предыдущей задаче..Таким образом, на первом этапе решения задачи необходимо определить
— количество цифр в числе. Затем нужно выделять из числа цифры, если очередная цифра равна нулю, вывести на экран номер разряда, который занимает эта цифра. Процесс определения текущей цифры числа
представлен в табл. 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 <iostream>
using namespace std;
int main ( )
{
unsigned long int N,M; int kol, i;
cout<<" N = "; cin >>N;
for ( kol =1,M=N;M/10 >0; kol ++,M/=10);
for (M=N, i =0; i <kol;M/=10, i ++)
if (M%10==0) cout<<"Позиция = "<<i <<endl;
return 0;
}
Задача 3.18. Дано натуральное число
. Получить новое число, записав цифры числа
в обратном порядке. Например, 17852 — 25871.
Входные данные:
— целое число.
Выходные данные:
— целое число, полученное из цифр числа
, записанных в обратном порядке.
Промежуточные данные:
— параметр цикла,
— переменная для временного хранения значения
— количество разрядов в заданном числе,
— старший разряд заданного числа.
Рассмотрим пример. Пусть
, тогда
.
Значит, для решения поставленной задачи, нужно знать количество разрядов в заданном числе
и его старший разряд
. Новое число
формируют как сумму произведений последней цифры заданного числа на старший разряд
. Цикл выполняют
раз, при каждой итерации уменьшая само число и старший разряд в десять раз.
#include <iostream>
using namespace std;
int main ( )
{ unsigned long int N,M, R, S; int kol, i;
cout<<" N = "; cin >>N;
for (R=1, kol =1,M=N;M/10 >0; kol ++,R* =10,M/=10);
for ( S=0,M=N, i =1; i<=kol; S+=M%10*R,M/=10,R/=10, i ++);
cout<<" S = "<<S<<endl;
return 0;
}
Задача 3.19. Проверить, является ли заданное число
палиндромом8Палиндром — это число, слово или фраза одинаково читающееся в обоих направлениях, или, другими словами, любой симметричный относительно своей середины набор символов. Например, числа 404, 1221 — палиндромы.
Входные данные:
— целое число.
Выходные данные: сообщение.
Промежуточные данные:
— параметр цикла,
— переменная для временного хранения значения
— количество разрядов в заданном числе,
— старший разряд заданного числа,
— целое число, полученное из цифр числа
, записанных в обратном порядке.
Можно предложить следующий алгоритм решения задачи. Записать цифры заданного числа
в обратном порядке (задача 3.18), получится новое число
. Сравнить полученное число
с исходным
. Если числа равны, то заданное число является палиндромом.
Текст программы на языке С++:
#include <iostream>
using namespace std;
int main ( )
{ unsigned long int N,M,R, S;
int kol, i;
cout<<" N = "; cin>>N;
for (R=1, kol =1,M=N;M/10 >0; kol++,R* =10,M/=10);
for (S=0,M=N, i =1; i<=kol; S+=M%10*R,M/=10,R/=10, i++);
if (N==S) cout<<"Число - палинром"<<endl;
else cout<<"Число не является палиндромом"<<endl;
return 0;
}
