Символы кириллицы выводит некорректно. Как сделать чтобы выводился читабельный текст на русском языке? Тип приложения - не 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; }