Глава 4. Использование функций при программировании на C++
cout<<"Количество палиндромов равно K = "<return 0 ;
}
Задача 4.5.
Заданы два числа — X в двоичной системе счисления, Y в системе
счисления с основанием пять. Найти сумму этих чисел. Результат вывести в
десятичной системе счисления.
Любое целое число N, заданное в b-ичной системе счисления, можно предста-
вить в десятичной системе счисления:
N = P
n
· b
b
+ P
n−1
· b
n−1
+ ... + P
2
· b
2
+ P
1
· b + P
0
=
n
X
i=0
P
i
· b
i
,
где b — основание системы счисления (целое положительное фиксированное чис-
ло), P
i
— разряд числа: 0 6 P
i
6
b − 1, i = 0, 1, 2, ..., n. Например,
743
10
= 7 · 10
2
+ 4 · 10
1
+ 3 · 10
0
= 700 + 40 + 3 = 743
10
;
1011101
2
=
1 · 2
6
+ 0 · 2
5
+ 1 · 2
4
+ 1 · 2
3
+ 1 · 2
2
+ 0 · 2
1
+ 1 · 2
0
= 64 + 16 + 8 + 4 + 1 = 93
10
.
Создадим функцию для перевода целого числа N, заданного в b-ичной систе-
ме счисления, в десятичную систему счисления.
#include
using namespace s t d ;
unsigned long long i n t DecNC( unsigned long long i n t N, unsigned i n t b )
{
//Функция выполняет перевод числа N, заданного в b-ичной системе счисления,
//в десятичную систему счисления
unsigned long long i n t S , P ;
f o r ( S=0 ,P=1;N! = 0 ; S+=N%10∗P , P∗=b ,N/=10) ;
return S ;
}
i n t main ( )
{
unsigned long long i n t X,Y; unsigned i n t bX , bY ;
cout<<" X = " ; c i n >>X;
//Ввод числа X.
cout<<" b = " ; c i n >>bX ; //Ввод основания с/с.
cout<<" Y = " ; c i n >>Y;
//Ввод числа X.
cout<<" b = " ; c i n >>bY ; //Ввод основания с/с.
//Вывод заданных чисел в десятичной с/с.
cout<cout<//Вычисление суммы и вывод результата.
cout<cout<return 0 ;
}
Задача 4.6.
Задано число X в десятичной системе счисления. Выполнить пере-
вод числа в системы счисления с основанием 2, 5 и 7.
Вообще, для того чтобы перевести целое число из десятичной системы счис-
ления в другую, необходимо выполнить следующие действия:
1. Разделить данное число на основание новой системы счисления: остаток от
деления — младший разряд нового числа;
2. Если частное от деления не равно нулю, продолжать деление, как указано
в п.1.
Программирование на языке С++ в среде Qt Creator
4.4. Решение задач с использованием функций
111
На рис. 4.1 приведён пример «ручного» перевода числа 256, заданного в десятич-
ной системе счисления, в восьмеричную. В результате получим 256
(10)
= 400
(8)
.
256
8
−256
32
8
0
−32
4
0
Рис. 4.1: Пример перевода числа в новую систему счисления
Далее приведён текст программы, реализующей решение задачи 4.6.
#include
using namespace s t d ;
unsigned long long i n t NC( unsigned long long i n t N, unsigned i n t b )
{
unsigned long long i n t S , P ;
f o r ( S=0 ,P=1;N! = 0 ; S+=N%b∗P , P∗=10 ,N/=b ) ;
return S ;
}
i n t main ( )
{
unsigned long long i n t X;
cout<<" X = " ; c i n >>X;
//Ввод числа X.
//Перевод числа X в заданные системы счисления.
cout<cout<cout<return 0 ;
}
Задача 4.7.
Найти корни уравнения x
2
− cos(5 · x) = 0.
Для решения задачи использовать:
• метод половинного деления,
• метод хорд,
• метод касательных (метод Ньютона),
• метод простой итерации.
Оценить степень точности предложенных численных методов, определив, за
сколько итераций был найден корень уравнения. Вычисления проводить с точ-
ностью ε = 10
−3
.
Вообще говоря, аналитическое решение уравнения
f (x) = 0
(4.1)
можно найти только для узкого класса функций. В большинстве случаев прихо-
дится решать уравнение (4.1) численными методами. Численное решение урав-
нения (4.1) проводят в два этапа: сначала необходимо отделить корни уравне-
ния
, т.е. найти достаточно тесные промежутки, в которых содержится только
один корень, эти промежутки называют интервалами изоляции корня; на вто-
ром этапе проводят уточнение отделённых корней, т.е. находят корни с заданной
точностью
.
© 2015 Алексеев Е. Р., Злобин Г. Г., Костюк Д. А., Чеснокова О. В., Чмыхало А. С.
112
Do'stlaringiz bilan baham: |