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


 

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

63855. Коммуникации в социокультурной динамике: коммуникативные практики посткризисного региона Дагестан как зеркало социокультурных изменений 177 KB
  Затем мы провели контент-анализ на основании заголовков и общего содержания записей. При этом мы ограничились лишь последними 10 записями каждого блога так как этого количества с одной стороны достаточно для того чтобы определить соотношение предметов обсуждения по их содержанию а с другой стороны это именно...
63856. Трансформация ритуалов в современном обществе 30.67 KB
  Ритуалы это своеобразные камни для строительства упорядоченного образа жизни. Соблюдение повседневных ритуалов помогает нам структурировать свой день и делит трудные периоды на мелкие части. Но всегда ли мы задумываемся об истинном смысле ритуалов На первый взгляд не так уж много ритуалов наполняют нашу жизнь...
63857. Трансформация социокультурного пространства в рамках экономической системы 52.5 KB
  На современном этапе развития социально-экономической формации возникает потребность в изучении и анализе социального пространства с междисциплинарных позиций в силу возрастающего влияния на все сферы жизни общества. Базовыми характеристиками современного общества выступают...
63858. Социальная идентичность: гендерный аспект 54 KB
  Социологическое определение идентичности отражает в свою очередь ее непосредственное отношение к личности и обществу. В своей книге Детство и общество Эриксон писал: Я могу попытаться более явно представить суть идентичности только рассмотрев ее с разных точек зрения.
63859. Экономические условия и политические аспекты трансформации социокультурного пространства в истории России 59.5 KB
  Если говорить о категориях институциональной жизни общества то можно выделить множество сфер которые подвергаются изменениям. Оно определяет общие ориентиры поведения людей совокупность социокультурных норм и ценностей общества которые и определяют это поведение.
63860. Анализ организационно-экономических основ инвестиционной деятельности муниципального образования 24.12 KB
  В условиях ограниченности собственных финансовых средств требующихся для реализации планов социально-экономического развития муниципальных образований а также отдельных целевых программ необходимо привлекать инвестиции аккумулировать сбережения и накопления граждан...
63861. Проблемы защиты коренных народов 44 KB
  В Приангарье проживает 1950 человек которые относятся к категории коренных малочисленных народов КМН 1272 эвенка и 678 тофаларов по переписи населения 2010 года. Постановлением Правительства Иркутской области от 1 апреля 2013 года № 106пп утверждена долгосрочная целевая программа...
63862. Причины изменения языка в разных социальных группах 47.5 KB
  Эти слова прижились и использует в повседневной речи. Часто употребляемые молодыми людьми слова и выражения не понятны взрослым нашим родителям бабушкам дедушкам. От слова €œботать учиться эти и многие другие слова и выражения привносят собой в язык особый смысловой оттенок.
63863. «Другие»: оценка гомосексуальности в разных культурах 24.08 KB
  Сегодня СМИ затрагивают абсолютно любые темы. Общество стало свободным, открытым. На просторах интернета можно найти ответы на любую тему. Эти изменения коснулись не только, каких либо масштабных процессов (внутренняя и внешняя политика), но и более личностных.