11720

Арифметичні операції і математичні функції мови C++

Лабораторная работа

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

Лабораторна робота №6 Тема: Арифметичні операції і математичні функції мови C Мета роботи:Отримання практичних навиків в програмуванні алгебраічних виразів і використанні математичних функцій бібліотеки мови С. Теми для попереднього опрацьовування ...

Украинкский

2013-04-10

130.5 KB

50 чел.

Лабораторна робота   №6

Тема: Арифметичні операції і математичні функції мови C++

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

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

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

Завдання для виконання

     Складіть програму, яка підраховує і виводить значення t1 і t2 по формулах, які приведені у Вашому варіанті індивідуального завдання. Визначте області допустимих значень параметрів формул і задайте довільні значення з цих областей. Параметри, які мають імена: n і m - цілі, решта параметрів - з плаваючою крапкою. Значення параметрів з іменами x і у повинні вводитися з клавіатури, значення інших - задаватися як початкові значення при оголошенні відповідних змінних.      

Варіанти індивідуальних завдань

1)

2)

3)

4)

5)

6)

7)

8)

9)

10)

11)

12)

13)

14)

15)

16)

17)

18)

19)

20)

21)

22)

23)

24)

25)

26)

27)

28)

29)

Приклад рішення задачі

    1. Розробка алгоритму рішення.

    1.1. Основний алгоритм

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

  •  введення значень x і у;
  •  обчислення значення t1;
  •  обчислення значення t2;
  •  виводу значень t1 і t2.

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

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

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

   В другій формулі двічі зустрічається множення квадратного кореня на тангенс - це обчислення можна так само зробити один раз.

   Вираз c2-b2 можна розкласти на (c+b)(с-b). До розкладання у виразі було дві операції множення (зведення в ступінь 2) і одна - складання. Після розкладання - два складання і одне множення, що вигідніше для обчислень.

    1.3. Обмеження на значення параметрів

     Аргумент функції, яку обчислює логарифм, не може бути 0 або менше. Звідси витікають вимоги до значень:

    а * x + b > 0; у * x + d > 0

    Аргумент функції обчислення квадратного кореня не може бути менше 0, звідси:

    c2 - b2 >= 0

    В знаменнику виразу не може бути 0, звідси:

    

крім того:

    

    2. Визначення змінних програми

    Для вирішення задачі нам знадобляться змінні для представлення кожного параметра формул - а, b, з, d, x, у і результатів - t1, t2. Крім того, доведеться ввести додаткову змінну ах для зберігання проміжного результату, необхідного для оптимізації. Тип всіх змінних - double.

 

   3. Розробка тексту програми

    Програма починається з включення файлів:

   #include <stdio.h>

   #include <math.h>

в яких знаходяться описи функцій уведення - виведення і математичних функцій відповідно.

    Далі відкриваємо головну функцію:

int main(void)

    Включаємо описи змінних (див. п.5.2):

double x,y;

   double a=12.5,  b=1.3;

   double c=14.1,  d=2.7;

   double t1, t2;

   double ах;

    Вводяться значення для змінних x і у:

   printf("Введіть x, у >");

   scanf("%lf %lf",&x,&y);

    Далі обчислюється перше проміжне значення:

   ax=a*x;

і перший результат:

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

    Обчислюється другий проміжний результат:

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

і обчислюється другий остаточний результат:

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

    Отримані результати виводяться на екран:

   printf("t1 = %lg\n",t1); printf("t2 = %lg\n",t2);

    Повний текст програми приводиться нижче.

/*******************************************************/

/*           Лабораторна  робота №6                   */

/*          Типи даних і уведення-виведення                   */

/*        Приклад виконання. Варіант №30.              */

/*******************************************************/

#include <stdio.h>

#include <math.h>

int main(void){

/* параметри, які вводяться */

double x,y;

/* параметри, які задаються в програмі */

double a=12.5,  b=1.3;

double c=14.1,  d=2.7;

double t1, t2;   /* результати */

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

 printf("Введіть x, у >");

 scanf("%lf %lf",&x,&y);

 ax=a*x;

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

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

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

 printf("t1 = %lg\n",t1);

 printf("t2 = %lg\n",t2);

 return 0;

}

    

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

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

    

5. Результати роботи програми

При роботі програми на екран було видане наступне:

Введіть x, у >3.3 1.1

t1 = 0.348897

t2 = 0.0133405

Додаток. Деякі стандартні математичні функції.

Стандартні математичні функції знаходяться у файлі math.h.

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

   int abs(int x);

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

   long labs(long x);

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

   double fabs(double x);

sqrt - витягання квадратного кореня:

   double sqrt(double x);

роw - зведення в ступінь:

   double роw(double x, double у);

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

   double cos(double x);

sin - синус - sin x:

   double sin(double x);

tan - тангенс - tg x:

   double tan(double x);

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

   double cos(double x);

asin - арксинус - arcsin x:

   double sin(double x);

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

   double atan(double x);

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

   double atan2(double x, double у);

exp - експонента :

   double exp(double x);

log - натуральний логарифм - ln x:

   double log(double x);

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

   double log10(double x);


 

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

10477. Мило, його склад, мийна дія. Синтетичні мийні засоби 70.5 KB
  Тема: Мило його склад мийна дія. Синтетичні мийні засоби. Мета: навчальна: сформувати уявлення про склад мила і мийних засобів їх мийну дію порівняти властивості мила і мийних засобів; закріпити знання про властивості карбонових кислот жирів естерів твердість води...
10478. Мій перший педагогічний досвід. Роздуми про мій перший урок 39 KB
  Мій перший педагогічний досвід. Роздуми про мій перший урок. 13.02.2009р. 10клас âНасичені вуглеводні. Прийшовши до школи я була дуже рада що мені випала можливість проводити уроки. Перед своїм першим уроком я готувалась два дні заздалегідь. Перше що було у моїй ...
10479. Місце елементів-металів у періодичній системі хімічних елементів Д.І. Менделєєва та особливості будови їх атомів 57.5 KB
  Тема: Місце елементівметалів у періодичній системі хімічних елементів Д.І. Менделєєва та особливості будови їх атомів. Металічний хімічний звязок. Загальні фізичні властивості металів. Навчальна мета: спираючись на знання періодичного закону та типи хімічних звяз...
10480. Насичені вуглеводні. Номенклатура 201 KB
  Дата: Тема: Урок залік з теми Насичені вуглеводні. Номенклатура. Тип уроку: урок застосування знань умінь та навичок. Навчальна мета: Конкретизувати та поглибити знання учнів з теми Насичені вуглеводніâ. Навчити учнів застосовувати загальні зако...
10481. Семінар з теми Ненасичені вуглеводні етиленового ряду 177 KB
  Дата: Тема: Семінар з теми Ненасичені вуглеводні етиленового ряду Навчальна мета: Конкретизувати та поглибити знання учнів з теми Ненасичені вуглеводні етиленового рядуâ; Навчити учнів застосовувати загальні закономірності для пояснення властивосте
10482. Ненасичені вуглеводні. Етилен як представник ненасичених вуглеводнів. Склад молекули, електронна та структурна формули, sp2-гібридизація електронів, σ- та π-звязки 63 KB
  Тема: Ненасичені вуглеводні. Етилен як представник ненасичених вуглеводнів. Склад молекули електронна та структурна формули sp2гібридизація електронів σ та πзвязки. Навчальна мета: сформувати поняття про новий гомологічний ряд алкени; ознайомити з новим видом гі...
10483. Ненасичені вуглеводні. Етилен як представник ненасичених вуглеводнів. Склад молекули, електронні та структурні формули, кратні звязки 64.5 KB
  Тема: Ненасичені вуглеводні. Етилен як представник ненасичених вуглеводнів. Склад молекули електронні та структурні формули кратні звязки. Гомологи етилену. Ізомерія карбонового скелету і положення кратного звязку. Номенклатура алкенів. Мета: навчальна: сформуват...
10484. Одержання кисню в лабораторії. Реакції розкладу. Поняття про каталізатори 56 KB
  Тема: Одержання кисню в лабораторії. Реакції розкладу. Поняття про каталізатори. Навчальна мета: розглянути основні лабораторні способи добування кисню дати уявлення про реакцію розкладу каталізатор. Виховна мета: виховувати в учнів самостійність вміння виконува
10485. Оксисен. Кисень, склад його молекули, фізичні властивості 53 KB
  Тема: Оксисен. Кисень склад його молекули фізичні властивості. Мета: навчальна: повторити класифікацію речовин за складом. Ознайомити з хімічним елементом Оксигеном. Вивчити склад фізичні властивості способи добування і збирання фізіологічну дію кисню. Сформувати