Библиотека математических функций cmath.
В отличие от Pascal, математические функции не входят в ядро языка, а вынесены в отдельную Си- библиотеку cmath. Чтобы эти функции стали доступными в программе необходимо включить в программу одноименный заголовочный файл (как это сделано в программе 8.3.1). Основные функции перечислены в методичке (Таблица 10).
Функции этой библиотеки возвращают действительный тип (в зависимости от типа аргумента). Одна из этих функций – abs() возвращает целый тип, поскольку применяется для целочисленных данных.
Работа с целыми числами
С целым типом связаны несколько типичных задач. Наиболее распространенные – это работа с разрядами числа и остатками от деления. Обе эти задачи используют операции деления целых чисел. Таких операций две:
Получение целой части от деления – “/”
Получение остатка от деления – “%”
Обе операции (а также операция умножения – “*”) имеют равный приоритет, поэтому в программе
8.3.2 для вычисления произведения – вычисление отдельных разрядов взято в скобки. Операции целочисленного деления имеют дефект – если делимое число является отрицательным числом, то остаток от деления (вне зависимости от знака делителя) будет тоже отрицательным числом, что расходится с правилами математики.
Итак, следующая задача.
Дано трехзначное число получить сумму и произведение разрядов этого числа.
//============================================================//
// Получение суммы и произведения разрядов трехзначного числа //
//============================================================//
#include using namespace std;
int main() { int n;
cout << "n = "; cin >> n;
cout << "Сумма цифр числа = "
<< n % 10 + n / 10 % 10 + n / 100
<< "\nПроизведение цифр числа = "
<< (n % 10) * (n / 10 % 10) * (n / 100)
<< endl; return 0;
}
Обсуждение. Поскольку мы используем десятичную систему счисления, то остаток от деления числа на 10 даст нам младший разряд десятичного числа. Аналогичными действиями мы можем получать разряды числа в другой системе счисления (однако делать это лучше в циклах, поскольку не ясно сколько разрядов будет иметь такое число).Типичным примером задачи на работу с остатками является задачи на определение долей времени. Постановка задачи. Дано целое число – количество полных дней, прошедших с начала года. Сколько полных недель прошло за этот период? Какой это день недели, если начало года (1 января) пришлось на понедельник (вывести число от 0 до 6: 0 – воскресенье, 1 – понедельник .. 6 – суббота). Так было, например, в 2018 году.
#include using namespace std;
int main() { int n;
cout << "n = "; cin >> n;
cout << "Количество полных недель - "
<< n / 7
<< "\nДень недели - "
<< n % 7
<< endl; return 0;
}
Do'stlaringiz bilan baham: |