- •Лекция 4 Операции и выражения
- •Понятие выражения и операции
- •Классификация операций
- •Приоритеты (ранги) операций
- •Арифметические операции
- •Примеры использования арифметических операций Выделение цифр в целом числе
- •Выделение цифр в вещественном числе
- •Арифметические операции над переменными символьного типа
- •Операции инкремента и декремента
- •Особенности выполнения операций инкремента и декремента
- •Операции присваивания
- •Примеры использования
- •Операции отношения
- •Логические операции
- •Особенности выполнения логических операций
- •Примеры использования логических операций
- •Логические выражения и примеры их записи
- •Поразрядные логические операции
- •Примеры выполнения поразрядных логических операций:
- •Операции поразрядного сдвига
- •Дополнительные операции Операции доступа к компонентам структурированного объекта
- •Операции доступа к адресуемым компонентам классов
- •Определение размера sizeof
- •Вызов функции ( )
- •Индексация [ ]
- •Операция запятая ,
- •Операция расширения области видимости ::
- •Преобразование типа
- •Правила преобразования типов
- •Примеры преобразования типов
- •2. Особенности преобразования типов int и double:
- •7. Проанализируйте преобразование типов в операторах присваивания:
- •8. Приведение типа в случае использования указателей:
- •9. Преобразование старшего типа к младшему удобно использовать для выделения отдельных частей переменной или константы:
- •10. С помощью приведения типа можно получить дробную часть числа:
- •Программирование вычисления алгебраических выражений
- •Определение первого символа вводимого значения
- •Контроль правильности ввода значения переменной
- •Основные встроенные (стандартные) функции
- •Пример вычисления по формуле
- •Замечания по программированию алгебраических выражений
- •Особенности представления чисел по двоичному основанию*
- •Особенности выполнения арифметических операций над вещественными числами*
- •Операции умножения и деления
- •Операции сложения и вычитания
- •Особые ситуации Ошибки округления
- •Ошибки переполнения
- •Потеря (исчезновение) порядка
- •Катастрофическая потеря порядка
- •Потеря значащих цифр
- •Особенности выполнения операций отношения (сравнения)
- •Обратить внимание
- •Правила работы с данными вещественных типов
Основные встроенные (стандартные) функции
функция |
прототип |
назначение |
заголовоч ный файл |
abs |
int abs(int x ); |
абсолютное значение |
math.h |
acos |
double acos(double x ); |
арккосинус |
math.h |
asin |
double asin(double x ); |
арксинус |
math.h |
atan |
double atan(double x ); |
арктангенс |
math.h |
ceil |
int ceil(double x ); |
округление с избытком |
math.h |
cos |
double cos(double x ); |
косинус |
math.h |
cosh |
double cosh(double x ); |
косинус гиперболический |
math.h |
exp |
double exp(double x ); |
экспонента |
math.h |
fabs |
double fabs(double x ); |
абсолютное значение |
math.h |
floor |
int floor(double x ); |
округление с недостатком |
math.h |
fmod |
double exp(double x, double y) ; |
остаток от деления x на y |
math.h |
labs |
long labs(long x ); |
абсолютное значение |
math.h |
log |
double log(double x ); |
логарифм натуральный |
math.h |
log10 |
double log10 (double x); |
логарифм десятичный |
math.h |
modf |
double modf(double x, * double y) ; |
вычисление целой и дробной части числа x |
math.h |
pow |
double pow(double x , double y) ; |
возведение x в степень y |
math.h |
rand |
int rand(); |
генерирование случайного числа (0-32767) |
stdlib.h |
sin |
double sin(double x ); |
синус |
math.h |
sinh |
double sinh(double x ); |
синус гиперболический |
math.h |
srand |
void srand(unsigned n); |
генерирование случайных чисел, начиная с заданного n |
stdlib.h |
sqrt |
double sqrt(double x ); |
квадратный корень |
math.h |
tan |
double tan(double x ); |
тангенс |
math.h |
Пример вычисления по формуле
при x=6.251, y=0.827, z=25.001
// вычисления по формуле, форматированный вывод в стиле С
// formula_1 ввод/вывод в стиле С #include <stdio.h>
#define _USE_MATH_DEFINES
#include <math.h>
#include <conio.h>
int main()
{
double x, y, z, b, r1, r2, r3, r4;
//r1, r2, r3, r4 – вспомогательные переменные
puts ("input x, y, z: ");
// функция выводит на экран строку
scanf ("%lf %lf %lf", &x, &y, &z);
//ввод значений через пробел или <enter>
r1=pow(y, pow(fabs(x), 1./3.));
//вычисление первого слагаемого
r2= cos(y);
r3=fabs(x-y)*(1+r2*r2/sqrt(x+y));
//вычисление числителя большой дроби
r4=exp(fabs(x-y))+x/2;
//вычисление знаменателя большой дроби
b=r1+r2*r2*r2*r3/r4;
printf ("\nfor x=%lf, y=%lf, z=%lf, b=%10.6lf\n", x, y, z, b); // вывод на экран
_getch();
return 0;
}
Результат: for x=6.251000, y=0.827000, z=25.001000, b= 0.713336
// вычисления по формуле, форматированный вывод в стиле С++
#include <iostream>
#include <iomanip>
#include <conio.h>
#define _USE_MATH_DEFINES
#include <cmath>
int main()
{
double x, y, r1, r2, r3, r4;
cout << "enter a real number x:\n"; //приглашение для ввода переменной х
cin >> x; // ввод значения 1.79 с клавиатуры
r1=cos(x);
r2 = pow((exp(r1) + x*x +sin(x)), .25);
r3 = (sin(M_PI*x*x) + log(x*x));
r4 = pow(r3, r1);
y=r2*r4;
cout << "\nfor x=";
cout.width(7); //ширина поля вывода для х
cout <<setiosflags(ios::fixed)<<setprecision(6) << x; //форма вывода и точность
cout << setw(8); // ширина поля вывода для " y="
cout << " y=" ;
cout << setprecision(8); //точность - количество знаков после запятой для y
cout.width(15); //ширина поля вывода для y
cout << y<< endl;
_getch();
return 0;
}