Глава 4. Использование функций при программировании на C++
e l s e
//в противном случае –– сообщение об отсутствии простых чисел.
cout<<"Нет простых чисел\ n " ;
i f ( ks >0) //Если счётчик совершённых чисел больше нуля,
//считаем среднее арифметическое и выводим его,
cout<<"Среднее арифметическое= "<<( f l o a t ) S/ ks<e l s e
//в противном случае — сообщение об отсутствии совершённых чисел.
cout<<"Нет совершённых чисел\ n " ;
return 0 ;
}
Задача 4.2.
Вводится последовательность целых чисел, 0 — конец последова-
тельности. Найти минимальное число среди простых чисел и максимальное —
среди чисел, не являющихся простыми.
Для решения данной задачи создадим функцию prostoe, которая будет про-
верять, является ли число N простым. Входным параметром функции будет це-
лое положительное число N. Функция будет возвращать значение 1, если число
простое, и 0 — в противном случае. Алгоритм поиска максимума (минимума)
подробно описан в задаче 3.20 (рис. 3.31).
Текст программы:
#include
using namespace s t d ;
unsigned i n t p r o s t o e ( unsigned i n t N)
{
i n t i , pr ;
f o r ( pr =1 , i =2; i <=N/ 2 ; i ++)
i f (N%i ==0) { pr =0; break ; }
return pr ;
}
i n t main ( )
{
i n t kp=0 ,knp=0 ,min , max ,N;
f o r ( c o u t << " N = " , c i n >>N; N! = 0 ; cout<<" N = " , c i n >>N)
//В цикле вводится элемент последовательности N.
i f ( p r o s t o e (N) )
//N — простое число ,
{
kp++;
//счётчик простых чисел.
i f ( kp==1) min=N; //Предполагаем, что первое простое число минимально,
e l s e i f (N}
e l s e
//N — простым не является,
{
knp++;
//счётчик чисел не являющихся простыми.
i f ( knp==1) max=N;
//Предполагаем, что первое не простое число максимально,
e l s e i f (N>max) max=N; //если найдётся большее число, сохраняем его.
}
i f ( kp>0) //Если счётчик простых чисел больше нуля,
c o u t <<" m i n = "<//выводим значение минимального простого числа,
e l s e
//в противном случае —
c o u t <<"Нет простых чисел" ; //сообщение об отсутствии простых чисел.
i f ( knp >0) //Если счётчик чисел не являющихся простыми больше нуля,
c o u t <<" m a x = "<e l s e //в противном случае —
c o u t <<"Нет составных чисел" ;
//сообщение об отсутствии чисел
//не являющихся простыми.
return 0 ;
}
Задача 4.3.
Вводится последовательность из N целых положительных чисел. В
каждом числе найти наименьшую и наибольшую цифры
3
.
3
Выделение цифры из числа подробно описано в задаче 3.16
Программирование на языке С++ в среде Qt Creator
4.4. Решение задач с использованием функций
109
Программный код к задаче 4.3.
#include
using namespace s t d ;
unsigned i n t Cmax( unsigned long long i n t P)
{
unsigned i n t max ;
i f (P==0) max=0;
f o r ( i n t i =1 ; P! = 0 ;P/=10)
{
i f ( i ==1) {max=P%10; i ++;}
i f (P%10>max) max=P%10;
}
return max ;
}
unsigned i n t Cmin ( unsigned long long i n t P)
{
unsigned i n t min ;
i f (P==0) min =0;
f o r ( i n t i =1; P! = 0 ;P/=10)
{
i f ( i ==1) {min=P%10; i ++;}
i f (P%10}
return min ;
}
i n t main ( )
{
unsigned i n t N, k ;
unsigned long long i n t X;
f o r ( cout<<" N = " , c i n >>N, k =1;k<=N; k++)
{
cout<<" X = " ; c i n >>X;
cout<<"Максимальная цифра= "<cout<<"
Минимальная цифра= "<}
return 0 ;
}
Задача 4.4.
Вводится последовательность целых положительных чисел, 0 —
конец последовательности. Определить, сколько в последовательности чисел-
палиндромов
4
.
Алгоритм определения палиндрома подробно описан в задаче 3.19. Далее при-
ведён программный код к задаче 4.4
#include
using namespace s t d ;
bool p a l i n d r o m ( unsigned long long i n t N)
{ //Функция определяет, является ли число N палиндромом, возвращает true, если N —
//палиндром, и false в противном случае
unsigned long i n t M, R, S ;
i n t k o l , i ;
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 ++) ;
i f (N==S ) return true ;
e l s e return f a l s e ;
}
i n t main ( )
{ unsigned long long i n t X;
i n t K;
f o r (K=0 , cout<<" X = " , c i n >>X;X! = 0 ; cout<<" X = " , c i n >>X)
i f ( p a l i n d r o m (X) ) K++;
4
Палиндром — любой симметричный относительно своей середины набор символов.
© 2015 Алексеев Е. Р., Злобин Г. Г., Костюк Д. А., Чеснокова О. В., Чмыхало А. С.
110
Do'stlaringiz bilan baham: |