67973

Обчислення виразів за допомогою математичних функцій

Практическая работа

Информатика, кибернетика и программирование

У стандарті мови C++ визначена стандартна бібліотека функцій, яка складається з великої кількості окремих тематичних бібліотек. Наприклад: стандартні бібліотеки, що залишилися в «спадок» від C; стандартні бібліотеки C++; API – функції, що надаються операційною системою...

Украинкский

2014-09-16

146.5 KB

2 чел.

i: Практична робота №5 до лекції №12. 

Практична робота № 5

Обчислення|підрахунок| виразів за допомогою математичних функцій.

Мета|ціль| роботи: програмування обчислювального процесу лінійної структури з використанням арифметичних операцій та математичних функцій  на мові С++.

Теми для попереднього опрацювання:

  •  арифметичні операції;
  •  порядок|лад| виконання операцій;
  •  стандартні математичні функції.

Варіанти індивідуальних завдань.   Див. додаток 1. 

Приклад розв’язання задачі 

Функції бібліотеки математичних функцій.

Теоретична частина.

У стандарті мови C++ визначена  стандартна бібліотека функцій, яка складається з великої кількості окремих тематичних бібліотек.  Наприклад:

  1.  стандартні бібліотеки, що залишилися в "спадок" від C;
  2.  стандартні бібліотеки C++;
  3.  API – функції, що надаються операційною системою;

Щоб використовувати функцію, потрібно знати:

  1.  у якій бібліотеці вона знаходиться,
  2.  як називається функція;
  3.  які параметри передаються на вхід функції;
  4.  який результат повертає функція.

Математичні функції

Особливості реалізації: підключення заголовного файлу math.h, який містить прототипи функцій.

Приклад: Написати програму, яка  обчислення куб дійсного числа за допомогою математичної функції з ім’ям  pow.

Прототип функції (файл math.h):   double pow(double x, double y);

#include <iostream>

#include <windows.h>

#include <math.h>

using namespace std;

void main()

{

SetConsoleCP(1251);

SetConsoleOutputCP(1251);

double n;

cin>>n;

cout<<"Куб числа "<<n<<" = "<<pow(n,3)<<endl;

cout<<"\n\n";

system("pause");

}

Неправильний варіант реалізації:

int n=5;

cout<<pow(n,3)<<endl;

Компілятор  виведе повідомлення про помилку.   

error C2668: 'pow' : ambiguous call to overloaded function

Неоднозначний виклик перенавантажуваної функції

Неправильний варіант реалізації:

int n=5;

cout<<pow(n,3.)<<endl;

Приклад:  Обчислити висоти трикутника, якщо відомі його сторони

Вхідні дані:   сторони трикутника a, b, c, які задаємо з клавіатури.

Вихідні дані: висоти трикутника ha, hb, hc;.

Алгоритм:

Формула обчислення висоти трикутника.

,

, де р= (a+d+с) /2 - півпериметр трикутника.

Квадратний корінь є формулою Герона для обчислення площі трикутника.

Проміжні змінні:

  perimeter - периметр трикутника p;

square -  площа трикутника

Ми не перевірятимемо значення на допустимість (хоча в реальних програмах обов'язково потрібно це робити) - сторони трикутника не можуть бути від’ємними  або нульовими.

Особливості реалізації: підключення заголовного файлу math.h, який містить прототипи функцій.

double sqrt(double x);

Текст програми:

#include <iostream>

#include <windows.h>

#include <math.h>

using namespace std;

void main()

{

SetConsoleCP(1251);

SetConsoleOutputCP(1251);

double a, b, c;    // сторони трикутника

double ha, hb, hc;    // висоти трикутника

double perimeter, square;   

cout<<"Задайте сторони трикутника: ";

cin>>a>>b>>c;

perimeter  = (a+b+c)/2;     

square  = sqrt(perimeter*(perimeter-a)*(perimeter-b)*(perimeter-c)); ha=2/a*square ;

cout<<"hа ="<<ha<<endl;

hb = 2/b*square ;

cout<<"hb ="<<hb<<endl;

hc = 2/c*square ;

cout<<"hc ="<<hc<<endl;

cout<<endl<<endl;     

system("pause");

return;

}

Контрольный тест:

Прямоугольный треугольник:

Задайте стороны треугольника: 3 4 5

hа =4

hb =3

hc =2.4

Равносторонний  треугольник.

Задайте стороны треугольника: 1 1 1

hа =0.866025

hb =0.866025

hc =0.866025

Равнобедренный  треугольник.

Задайте стороны треугольника: 3 3 2

hа =1.88562

hb =1.88562

hc =2.82843

Перевантаження функцій

Перевантаження функцій - це  використання одного імені функції для декількох функцій.

Приклад. Написати дві функції для виконання ділення двох чисел. У першій - параметри цілого типу,  у другої - дійсного.

Программа складається з 3-х функцій.

  1.  Головна функція:

Вхідні дані:  два цілих і два дійсні числа ;   

Вихідні дані :  виведення на екран результату функції ділення двох  чисел..

  1.  Функція ділення двох цілих чисел.  Ім'я функції -  Div.    

Вхідні дані:      цілі числа numbFirst,numbSecond; 

Значення, яке повертає функція :  частка від ділення.

Прототип функції:    int Div(int numbFirst,int numbSecond);

  1.  Функція ділення двох дійсних  чисел.  Ім'я функції -  Div.    

Вхідні дані:      дійсні числа  numbFirst,numbSecond; 

Значення, яке повертає функція :  частка від ділення.

Прототип функції:  double Div(double numbFirst,double numbSecond);

Текст програми.

#include <iostream>

using namespace std;

int Div(int a, int b);    // пртотип функції Div

double Div(double a, double b);   // пртотип функції Div

void main()    

{

cout<<Div(2,3)<<endl;

cout<<Div(2.,3.);

cout<<endl<<endl;

   

system("pause");

return;

}

int Div(int numbFirst, int numbSecond)

{

 return numbFirst/numbSecond;

}

double Div(double numbFirst, double numbSecond)

{

 return numbFirst/numbSecond;

}

Результат

0

0.666667


Приклад розв’язання задачі.       Назад

Скласти програму, яка підраховує|підсумовує| і|та| виводить на екран значення  змінних t1 і|та| t2 відповідно до заданих формул. Значення деяких параметрів,  можуть бути цілими числами або  числами з|із| плаваючою точкою|крапкою|. Вони повинні вводитися|запроваджувати| з клавіатури. Значення інших|останніх| - задаватися як початкові значення при оголошенні відповідних змінних.    У разі потреби, допускається (і навіть бажано) спростити формули для того, щоб забезпечити мінімізацію об'єму|обсягу| обчислень|підрахунків|.

Вхідні дані:

x і|та| y – змінні дійсного типу;

a, b, c, d  - константи дійсного типу.

Вихідні дані:

t1 і|та| t2 – змінні дійсного типу .

Алгоритм.

Алгоритм розв’язання задачі - лінійний і|та| складається з|із|:

  •  визначення констант  a, b, c, d .
  •  введення значень x і|та| y.
  •  обчислення|підрахунки| значення t1;
  •  обчислення|підрахунки| значення t2;
  •  виведення значень t1 і|та| t2.

Оптимізація алгоритму

Проаналізуємо, як в можна зменшити об'єм|обсяг| обчислень|підрахунків|.

  •  Вираз ax зустрічається один раз в першій формулі і|та| двічі в другій. Отже, можна один раз провести множення ax, а потім використовувати цей результат.
  •  У другій формулі двічі зустрічається множення квадратного кореня на тангенс - це обчислення|підрахунок| можна так само зробити один раз.


Текст програми для компілятора Visual Studio 2005

#include <iostream>

#include <windows.h>

#include <math.h>

using namespace std;

void main()    

{

SetConsoleCP(1251);

SetConsoleOutputCP(1251);

 double x, y;

 const double a=12.5,b=1.3,c=14.1,d=2.7;

 double t1, t2;        

 double ax;             // робоча змінна

cout<<"Введіть x, y : ";

cin>>x>>y;

ax=a*x;

t1=(b*log(ax+b)/a+d*log(y*x+d)/y)/c;

ax=sqrt((c - b)*(c+b))*tan(ax);

t2=log((ax+2)/(ax - 2))/(2*a*b);

cout<<"\n t1 ="<<t1<<"\n t2 ="<<t2;

cout<<"\n\n";

system("pause");

 return;

}

 Відладка програми

 При відладці програми бажано перевіряти правильність виконання кожної операції. Для цього складні оператори-вирази, розбиваються на послідовність простих операторів-виразів, в кожному з яких виконується тільки|лише| одна операція. Результат кожної такої операції виводиться на екран або відстежується|відслідковує| в покроковому режимі.

Результат

Введіть x, y : 5 1.2

t1 =0.375863

t2 =-0.0270576


Додаток 1. Бібліотека математичних функцій.    Назад

Для використання функцій необхідно підключити заголовний файл math.h.

Ім’я  функції

Призначення

Прототип  функції

Приклади

abs

абсолютне значення цілого числа - |x|

int abs(int x);

labs

абсолютне значення "довгого" цілого числа - |x|:

long labs(long x);

fabs

абсолютне значення числа з|із| плаваючою точкою|крапкою| - |x|:

double fabs(double x);

если х>0,то fabs(x)=x  

если х=0,то fabs(x)=0.0

если х<0,то fabs(х)=-x

sqrt

витягання|видобування| квадратного кореня :

double sqrt(double x);

sqrt (900.0)= 30.0

sqrt(9.0)= 3.0

pow

піднесення до ступеня:

double pow(double x, double y);

pow( 2,7)= 128.0

pow(9,0.5)= 3.0

cos

косинус - x (тут і|та| далі x задається в радіанах) :

double cos(double x);

cos(0.0)=1.0

sin

синус - x:

double sin(double x);

sin(0.0)=0.0

tg

тангенс X (х в радианах).

double tan(double x);

tan(0.0)=0.0

arccos

арккосинус - x:

double acos(double x);

arcsin

арксинус - x:

double asin(double x);

arctg

арктангенс - x:

double atan(double x);

arctg

арктангенс - x/y:

double atan2(double x, double y);

exp

експонента:

double exp(double x);

ехр(1.0)= 2.718282 ехр(2.0)= 7.389056

log

натуральний логарифм - ln x (основание е)

double log(double x);

log(2.718282)=1.0

log(7.38905)= 2.0

log10

десятковий логарифм - log10x:

double log10(double x);

log10(1.0)=0.0 log10(10.0)=1.0 log10(100.0)=2.0

ceil

Повертає найближче ціле, більше х

double ceil(double x)

Ceil(9.2)=10

Ceil(-9.8)=-9

floor

Повертає найближче ціле, менше х

double floor(double x)

floor(9.2)=9.0

floor(-9.5 )= -10.0


Додаток 2.
Варіанти індивідуальних завдань     Назад|задавань|

Варіант 1              Практична робота №2

Варіант 2              Практична робота №2

Варіант 3              Практична робота №2

Варіант 4              Практична робота №2

Варіант 5              Практична робота №2

Варіант 6              Практична робота №2

Варіант 7              Практична робота №2

Варіант 8              Практична робота №2

Варіант 9              Практична робота №2

Варіант 10              Практична робота №2

PAGE  6

FILENAME \p C:\Anna_2013\Ci_2013_2014\Lesson_C_12_Mathematics_Function_Lec_Lab5_Control\Lab\C_LAB_05_Function_Math_L12_Metodichka_st_ukr.doc  DATE \@ "M/d/yyyy" 10/26/2013


 

А также другие работы, которые могут Вас заинтересовать

5383. Расчет параметров мехатронного модуля 3.17 MB
  Расчет механических параметров мехатронного модуля. Выбор двигателя и редуктора. Оптимизация диаграммы рабочего цикла Задание на проектирование МС управления приводом. Тележка с собственной массой = 500 кг перемещает груз массой...
5384. Технология цифровых радиорелейных линий 260.5 KB
  Технология цифровых радиорелейных линий в настоящее время достигла высокого качественного и количественного развития. Сегодня радиорелейные линии являются необходимым звеном телекоммуникационного пространства России и успешно конкурируют с ...
5385. Сущность и перспективы развития лизинга 285.5 KB
  Одной из новых форм кредитных отношений, которую уже освоили российские банки, является лизинг. Эта операция получила большое распространение в мировой банковской практике. Феномен лизинга уже к началу 80-х гг. определился не как простая до...
5386. Факсимильная связь 202 KB
  Развитие факсимильной связи и фототелеграфии уходит корнями в прошлое столетие и таким образом пронизывает практически всю историю электросвязи. Факсимильная связь в настоящее время является неотъемлемой составляющей современной деятельност...
5387. Расчёт экономической эффективности внедрения нового типа ВС 83.5 KB
  Задание. Рассчитать экономическую эффективность сравниваемых типов ВС: Ту-214 и А-320 (количество пассажирских кресел - 160) на основании расчёта себестоимости рейса и квартальной программы полётов по следующим статьям расходов: Расходы н...
5389. Строительство автомобильной дороги в Кировской области 444.5 KB
  К реконструкции участка автомобильной дороги относятся работы по замене изношенных и устаревших элементов более прочными и экономичными, обеспечивающими (с учетом деления на перспективу) повышение транспортно-эксплуатационных характеристик...
5390. Політологія як наука. Предмет і методи політології. Конспект лекцій 854 KB
  Предмет і методи політології. План Політика як суспільне явище. Об'єкт, предмет, структура та функції політології. Категорії політології. Методи політології. Зв'язок політології з суспільними науками. Політика...
5391. Введение. Предмет и содержание гигиены, экологии и экологии человека 23.87 KB
  Предмет и содержание гигиены, экологии и экологии человека. Предметом гигиены является изучение закономерностей взаимодействия факторов природной и социальной среды и организма человека, исследование причинно-следственных связей в систе...