Читайте также:
|
|
Функции, объявленные в math.h, позволяют проделывать разнообразные арифметические, алгебраические и тригонометрические операции.
Функция | Результат |
int abs(int x) | Абсолютное значение |
double pow(double x, double y) | x в степени у |
double sine(double x) | Синус |
double sqrt(double x) | Квадратный корень |
double tan(double x) | Тангенс |
Использование математических функций будет понятным и простым для тех, кто знаком с соответствующими понятиями алгебры и тригонометрии. Многие из этих функций уже использовались ранее. При использовании тригонометрических функций следует помнить, что значения углов всегда выражены в радианах. Некоторые математические функции приведены в таблице.
sin(x) синус x
cos(x) косинус x
tan(x) тангенс x
asin(x) арксинус x в диапазоне [–p/2, p/2], x О [–1, 1]
acos(x) арккосинус x в диапазоне [0, p], x О [–1, 1]
atan(x) арктангенс x в диапазоне [–p/2, p/2]
atan2(y,x) арктангенс y/x в диапазоне [–p, p]
sinh(x) гиперболический синус x
cosh(x) гиперболический косинус x
tanh(x) гиперболический тангенс x
exp(x) экспоненциальная функция ex
log(x) натуральный логарифм ln(x), x > 0
log10(x) десятичный логарифм lg(x), x > 0
pow(x,y) xy, ошибка области, если x = 0 или y <= 0 или x < 0 и y — не целое
sqrt(x) Цx, x >= 0
ceil(x) наименьшее целое в виде double, которое не меньше x
floor(x) наибольшее целое в виде double, которое не больше x
fabs(x) абсолютное значение |x|
ldexp(x, n) x * 2n
frexp(x, int *еxр) разбивает x на два сомножителя, первый из которых — нормализованная дробь в интервале [1/2, 1), которая возвращается, а второй — степень двойки, эта степень запоминается в *exp. Если x — нуль, то обе части результата равны нулю
modf(x,double *ip) разбивает x на целую и дробную части, обе имеют тот же знак, что и x. Целая часть запоминается в *ip, дробная часть выдается как результат
fmod(x, y) остаток от деления x на y в виде числа с плавающей точкой. Знак результата совпадает со знаком x. Если y равен нулю, результат зависит от реализации
Заголовок функции | Назначение | Пример вызова |
int abs(int x); long labs(long x) double fabs(double x) | Модуль (значение без знака) для целого, длинного и вещественного аргументов | int a; long b; float c; float d = abs(a)*labs(b)/fabs(c); |
double ceil(double x) | Наименьшее целое, не меньшее x, т.е. фактически округление до целого вверх. | x = ceil(1.7/0.5); // x=4 |
double floor(double x) | Наибольшее целое, не большее х, т.е. округление до целого вниз | x = floor(1.7/0.5); // x=3 |
double sqrt(double x) | Квадратный корень из аргумента. Если аргумент окажется отрицательным, программа выдаст ошибку "Divide error" (ошибка деления). | float d=sqrt(S)*sqrt(2); // диагональ квадрата по площади |
double pow(double x, double y) double pow10(double x) | Функция pow возводит x в степень y, при этом, как видно, и основание, и показатель степени вещественные. pow10 возводит 10 в степень х. | x = pow(1.3, -2.5); // x~=0.519 |
double cos(double x) double sin(double x) double tan(double x) | Тригонометрические функции косинус, синус и тангенс. Угол х для всех этих функций задается в радианах. Для перевода радиан в более привычные пользователю градусы и обратно используются формулы: x = 180*n/M_PI; // радианы в градусы n = M_PI*x/180; // градусы в радианы где M_PI - константа, определенная в библиотеке math - число Пи типа double. | // a, b - катеты; с - гипотенуза alpha *= M_PI/180; // преобразуем в радианы a = c*sin(alpha); b = c*cos(alpha); |
double acos(double x) double asin(double x) double atan(double x) double atan2(double x, double y) | Обратные тригонометрические функции арккосинус, арксинус, арктангенс числа x. Результат возвращается в радианах. При этом функция atan2 возвращает арктангенс частного y/x. | alpha = asin(a/c); // угол по катету и гипотенузе |
Распечатать таблицу чисел, значения их квадратов и квадратных корней. Программа должна выровнять столбцы, дополнить их пробелами, заполнить пробелы нулями и установить точность.
#include <iostream>
#include <math.h>
using namespace std;
void main()
{
float i,a,b;
setlocale(LC_ALL, "Russian");
cout<<"Введите диапазон чисел от: ";
cin>>a;
cout<<"и до: ";
cin>>b;
for(i=a;i<b;i++)
{
cout.width(8); //задаем ширину поля
cout.setf(ios:: left);//выравниваем по левому краю
cout.fill ('0'); // символ заполнения
cout<<"число: "<<i<<"\t";//выравниваем по левому краю
cout.width(18); //задаем ширину поля
cout.setf(ios:: left);//выравниваем по левому краю
cout.fill ('0'); // символ заполнения
cout<<"квадрат числа: "<<i*i<<"\t";
cout.width(28); //задаем ширину поля
cout.setf(ios:: left);//выравниваем по левому краю
cout.fill ('0'); // символ заполнения
cout.precision(4); //задаём точность
cout<<"квадратный корень числа: "<<sqrt(i)<<endl;
}
}
55. Функции для работы с датой и временем. Структуры для представления даты/времени и параметры функций. Работа с функциями localtime() и asctlme(). Работа с функциями gmtime() и asctime(). Работа с функцией strftime(). Работа с функцией ctime().
В следующей таблице приведены некоторые функции, объявленные в time.h.
Функция | Действие |
ctime() char * ctime(const time_t * timeptr); | Преобразует дату и время в строку Функция преобразует значение типа time_t в Си-строку, которая содержит дату и время в человеко-понятном формате. Возвращаемая строка имеет следующий формат: Www Ммм дд чч: мм: сс гггг В конце строки стоят символы новой строки \n и завершающий нулевой символ \0. Эта функция эквивалентна asctime, единственное их отличие — передаваемый параметр. |
difftime() double difftime(time_t timeend, time_t timestart); | Вычисляет интервал времени Вычисляет разность в секундах между timestart и timeend в секундах типа double. |
localtime() struct tm * localtime(const time_t * timeptr); | Преобразует дату и время в структуру tm, содержащую информацию о текущем времени. Функция преобразовывает текущее значение времени, передаваемое как аргумент, через указатель timeptr на time_t в структуру tm. Время указанное в timeptr используется для заполнения структуры tm значениями текущей даты и времени. |
asctime() char * asctime(const struct tm * tmptr); | Функция преобразует содержимое структуры tm (календарное время) в Си-строку, которая содержит дату и время в понятной для человека форме. Возвращаемая строка имеет следующий формат: Ннн Ммм дд чч: мм: сс гггг, где: |
gmtime() struct tm * gmtime(const time_t * timeptr); | Функция принимает значение времени в качестве аргумента через указатель timeptr на time_t, чтобы заполнить элемент-члены структуры tm, дату и время в формате GMT. Указатель на заполненную структуру tm информацией о времени. Структура tm статическая и предоставляется функциям gmtime и localtime. |
strftime() size_t strftime(char * stringptr, size_t maxnum, const char * strformat, const struct tm * timeptr); | Форматирует дату и время для вывода Из структуры tm извлекаются необходимые значения даты и времени и помещаются в строку strformat, где и подвергаются форматированию с помощью спецификаторов формата. Предварительно отформатированное содержимое строки strformat копируется в строку stringptr, размер копируемой строки ограничивается по количеству символов в параметре maxnum. Если размер копируемой Cи-строки меньше или равен значению в maxnum, включая завершающий нулевой символ, то функция вернет общее количество копируемых символов (не учитывая завершающий нуль-символ). В противном случае возвращается ноль и содержимое строки не определено. |
time() time_t time(time_t * timeptr); | Возвращает текущее время (системное) Функция возвращает текущее календарное значение времени в секундах. Если аргумент не является нулевым указателем, ей передается значение времени типа time_t. |
Многие из функций, перечисленных в предыдущем разделе, используют структуру tm, описанную в файле time.h. Структура tm содержит значения даты и времени, все значения хранятся в отдельных полях. Структура состоит из девяти полей типа int:
int tm_sec; // секунды
int tm_min; // минуты
int tm_hour; // часы
int tm_mday; // дни
int tm_mon; // месяца
int tm_year; // года
int tm_wday; // дни недели
int tm_yday; // дней в году
int tm_isdst; // флаг летнего времениВ прикладной программе зачастую приходится использовать значение текущей даты и времени. Следующая программа работает с этими значениями посредством функций localtime() и asctime().
//19TIME.CPP
//Эта программа отображает текущую дату и время
#include <iomanip>
#include <time.h>
using namespace std;
struct tm *date_time;
time_t timer;
main()
{
time(&timer);
date_time = localtime(&timer);
printf("The present date and time is: %s\n", asctime(date_time));
return (0);
}
Эта программа отображает дату и время в виде:
The present date and time is: Fri Oct 14 13:16:20 2005
1. //пример использования функции difftime
#include <iostream>
#include <ctime>
int main ()
{
time_t start, end;
char name[80];
time (&start); // начальное время
std::cout << "Пожалуйста, введите свое имя: ";
std::cin.getline(name,80); // считать имя в name
time (&end); // конечное время
std::cout << "Здравствуйте " << name << std::endl;
std::cout << "Вам понадобилось "
<< difftime(end, start)
<< " секунд для ввода своего имени.n";
return 0;
}
Результат: Пожалуйста, введите свое имя: Чак Бартовски
Здравствуйте Чак Бартовски
Вам понадобилось 7 секунд для ввода своего имени.
2. //пример использования функции time
#include <iostream>
#include <ctime>
int main ()
{
time_t seconds;
seconds = time (NULL); // получить текущую дату, выраженную в секундах
std::cout << "Количество часов, прошедших с 1 января 1970 года = "
<< seconds/3600 << std::endl;
return 0;
}
Результат: Количество часов, прошедших с 1 января 1970 года = 374967
Дата добавления: 2015-09-03; просмотров: 241 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Специальный класс string ( в методичках Белодеда по-другому, поэтому это только для ознакомления и на всякий случай) | | | Интерфейс вызовов функций в Windows |