Вычисление математических выражений

Автор работы: Пользователь скрыл имя, 12 Апреля 2012 в 16:30, лабораторная работа

Краткое описание

Целью работы является вычисление сложных математических выражений.
Задание на лабораторную работу
Напишите программу для расчёта двух формул. Предварительно подготовьте тестовые примеры по второй формуле с помощью калькулятора (результат вычисления по первой формуле должен совпадать со второй). Значение параметров тригонометрических функций должны задаваться пользователем в градусах

Содержимое работы - 1 файл

ГУАП.docx

— 53.30 Кб (Скачать файл)

ГУАП

КАФЕДРА № 43

 

 

ОТЧЁТ  
ЗАЩИЩЕН С ОЦЕНКОЙ

ПРЕПОДАВАТЕЛЬ

       

Соловьёва Н.А.

должность, уч. степень, звание

 

подпись, дата

 

инициалы, фамилия


 

 

 

 

 

ОТЧЁТ О ЛАБОРАТОРНОЙ РАБОТЕ №1

Вычисление математических выражений

по дисциплине: Информатика и программирование

 

РАБОТУ ВЫПОЛНИЛА

СТУДЕНТКА ГР.

4131

     

Платонова А.А.

     

подпись, дата

 

инициалы, фамилия


 

 

 

 

Санкт-Петербург 
2012

 

 

 

 

  1. Цель работы

Целью работы является вычисление сложных математических выражений.

  1. Задание на лабораторную работу

Напишите программу для  расчёта двух формул. Предварительно подготовьте тестовые примеры по второй формуле с помощью калькулятора (результат вычисления по первой формуле  должен совпадать со второй). Значение параметров тригонометрических функций  должны задаваться пользователем в  градусах.

Вариант 14

 

3) Описание созданных функций:

1)Имя: funz1

Назначение: вычисление 1-ой формулы

Описание входных данных: значение угла в градусах

Описание выходных данных: значение формулы(результат)

Тестовые данные: (при 0 градусах)z=1

(при 30 градусах)z=3,73205

(при 60 градусах)z=-3,73205

(при 90 градусах)z=-1

Описание алгоритма:

- псевдокод: 

x.радиан=х.градусов*Пи/180

z = (cos(x)+sin(x))/(cos(x)-sin(x))

- блок-схема:


 


 



 

 

 

 


 

 

 

 

 

2) Имя: funz2

Назначение: вычисление 2-ой формулы

Описание входных данных: значение угла в градусах

Описание выходных данных: значение формулы(результат)

Тестовые данные:

(при 0 градусах)z=1

(при 30 градусах)z=3,73205

(при 60 градусах)z=-3,73205

(при 90 градусах)z=-1

 

Описание алгоритма:

- псевдокод: 

x.радиан=х.градусов*Пи/180

z2=tan(2*x)+(1/cos(2*x))

- блок-схема:


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3)Имя: checkx

Назначение: проверка допустимости значения

Описание входных данных: значение угла в градусах

Описание выходных данных: true, если значение допустимо иначе false

Тестовые данные:

(при 0 градусах)res = true

(при 30 градусах)res = true

(при 45 градусах)res=false

(при 60 градусах)res = true

(при 90 градусах)res = true

Описание алгоритма

- псевдокод: 

checkx = not(|х.град|  % 90 == 45)

- блоксхема

 






 



 

 

 

 

 

4) Имя: main

Назначение: главная функция  программы

Псевдокод

Нет_Введенного_правильного_значения = true

ПокаНет_Введенного_правильного_значения

Запросправильного значения X

Нет_Введенного_правильного_значения = NotПроверка правильного Х (x)

ЕслиНет_Введенного_правильного_значения

Вывод сообщения что значение неправильное

Вычисление результата первой формулы

Вычисление результата второй формулы

Вывод результата первой формулы

Вывод результата второй формулы


 

 


 

 








 


 






 


 



 

 



 



 

 

 

4) Пример выполнения программы:

 

5) Листингпрограммы:

#include<cmath>// математическая библиотека

#include<iostream>// библиотека консольного ввода вывода

#include<windows.h>// содержит SetConsoleOutputCP поддержка русской кодировки

#include<conio.h>// содержит getch для ожидания нажатия клавиши

 

usingnamespace std; 

 

// funz1 функция вычисления  первой формулы

double funz1 (double xgrad)

{

double z, x;

x = xgrad * 3.1415926535 / 180;

z = (cos(x)+sin(x))/(cos(x)-sin(x)); 

return z;

}

 

// funz1 функция вычисления  второй формулы

double funz2 (double xgrad)

{

double z, x;

x = xgrad * 3.1415926535 / 180;

z = tan(2*x)+(1/cos(2*x));

return z;

}

 

// checkx функция проверки  допустимости значения (true если значение  допустимо)

bool checkx (double xgrad)

{

// 45 + (90 * N) градусов (где N целое число) -  недопустимое  значение при котором  в  знаменателе будет 0 : cos(x)-sin(x)=0 и  cos(2x)=0

bool res = !((double(int(xgrad))== xgrad) &&// целое (проверка нужна потому что % целочисленная операция)

(int(abs(xgrad)) % 90 == 45));  // остаток от деления на 90 абсолютного значения

return res;

}

 

// главнаяфунция

int main()

{

double x;  // значение в градусах

double z1; // результат вычисления первой формулы

double z2; // результат вычисления второй формулы

bool isInvalid;  // признак недопустимости входного значения 

 

SetConsoleOutputCP(1251);  // поддержка русской кодировки 

isInvalid = true;  // присваиваем изначально true чтобы попасть внутрь цикла ввода

 

// цикл ввода  правильного значения

while(isInvalid)

{

cout <<"введите x: ";  // вывод приглашения к вводу

cin >> x;               // вввод значения x  

isInvalid = !checkx(x); // проверка допустимости значения

if (isInvalid)    // если значение недопустимо вывести предупреждение

cout <<"Недопустимое значение."<< endl;

}

 

z1 = funz1(x);  // вычисление результата первой формулы

z2 = funz2(x);  // вычисление результата второй формулы

 

// вывод результатов

cout <<"z1="<< z1 << endl;

cout <<"z2="<< z2 << endl;

 

cout <<"Для продолжения нажмите любую клавишу.";

_getch(); // ожидание нажатия клавиши

return 0;

}

 

 

6) Выводы:

К достоинствам программы можно отнести:

    • Программа выполняет поставленную задачу и работает без ошибок (для корректных тестовых данных).
    • Программа проста в применении
    • Производится проверка входных данных.

 

 

Из недостатков  можно отметить:

    • Ограниченная точность( выводит 5 чисел, после запятой)

Информация о работе Вычисление математических выражений