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);


 

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

54822. НОВОРІЧНІ ЛІНГВІСТИЧНІ ПАЗЛИ 157 KB
  Нікополь Сама форма пазлів на мою думкуналаштовує дитину на гру робить цікавим сам процес навчання чи виховання. Що значить скласти пазл Поперше зібрати ціле за його частинами; подругесистематизувати знання про частини та про ціле; потретєпобачити цілісну картину представленого. Пропоную вашій увазі новорічні лінгво етимологічні пазли.
54823. Клуб внимательных пешеходов 60.5 KB
  Сегодня мы проверим насколько хорошо вы знаете правила дорожного движения и умело применяете знания на практике Юные пешеходы Будущие водители Дети и родители Велосипедисты и автомобилисты. Азбуку эту помни всегда чтобы с тобой не случилась беда Везде и всюду правила Их надо знать всегда Свои имеют правила шофер и пешеход Как табличку умножения как урок Помни правила движения назубок Внимание Внимание Вас ожидает состязание На лучшее знание и выполнения Правил дорожного движения Перед нами 2 команды. Послушайте правила игры.
54824. Воспитательный час по ПДД 46 KB
  Денис: Приветствую Вас ребята Здесь в лесу проходит дорога. Вот теперь идите смело Пешеходам путь открыт Проходите разрешаю Не беда что я один Я надежно защищаю От трамваев и машин Денис Ну что ребята запомним сигналы Светофора. Заяц Денис помоги Денис Что случилось Зайчик Заяц Большая беда может произойти Денис Я слушаю рассказывай.
54825. Правила дорожнього руху знай – життя і здоров’я зберігай 49.5 KB
  Мета заходу: закріпити навички учнів з ПДР; навчити їх постійно дотримуватися правил ПДР, аналізувати їх значення, не ризикувати своїм життям і здоров’ям, перебуваючи на дорозі; виховувати почуття відповідальності, свідомого ставлення до реальних подій, дисциплінованості; формувати соціальну і здоров’язберігаючу компетенцію.
54826. МИР У ВСЬОМУ СВІТІ 73 KB
  Preparation: To create props for the assembly, which say: «To Peace in the world» and «People become terrorists because…», and will be displayed on the stage of the Assembly Hall. Pictures about terrorism will be displayed on the screen. Materials needed: Multimedia equipment, notebook, cards with the songs and poems about «To Peace in the world»
54827. Основні складові трудової діяльності дошкільників 50.5 KB
  Сьогодні ми знову зібралися для того щоб поговорити про дуже важливу проблему трудове виховання дітей дошкільного віку. Щоб поліпшити його необхідно переглянути систему знань про працю дорослих членів суспільства які отримують діти змінити ставлення до людей праці і сформувати у дітей працелюбність як одну з базових якостей особистості. Знання стимулюють розвиток моральних почуттів дітей та спонукають їх до діяльності. Залишаючись актуальною протягом всієї історії розвитку людства проблема трудового...
54828. Педагогіка орієнтована на дитину 89.5 KB
  Що мається на увазі під поняттям діти с особливими потребами Це діти які в силу різних причин потребують посиленої уваги педагогів що здійснюють навчання виховання соціальну підтримку цих дітей тобто діти яких природа позбавила можливості на достатньому рівні сприймати світ й відчувати свою належність до нього через хвороби вади чи патологічний стан. Сьогодні ми поділимося досвідом як проходить процес навчання та виховання таких дітей у нашому закладі: якою повинна бути звичайна освіта для особливих дітей. Тому сьогодні на...
54829. Методика преподавания режиссуры театрализованных представлений и праздников на примере темы: «Приемы активизации аудитории» 36 KB
  Учебнохудожественные задачи: познакомить с методами активизации испробовать методы на аудитории и проверить их эффективность.Основная часть: Назначение методов активизации аудитории привлечение внимания формирование интереса создание доверия возбуждение желания призыв к действию. Методы активизации аудитории подсадка.