Автор работы: Пользователь скрыл имя, 12 Апреля 2012 в 16:30, лабораторная работа
Целью работы является вычисление сложных математических выражений.
Задание на лабораторную работу
Напишите программу для расчёта двух формул. Предварительно подготовьте тестовые примеры по второй формуле с помощью калькулятора (результат вычисления по первой формуле должен совпадать со второй). Значение параметров тригонометрических функций должны задаваться пользователем в градусах
ГУАП
КАФЕДРА № 43
ОТЧЁТ
ЗАЩИЩЕН С ОЦЕНКОЙ
ПРЕПОДАВАТЕЛЬ
Соловьёва Н.А. | ||||
должность, уч. степень, звание |
подпись, дата |
инициалы, фамилия |
ОТЧЁТ О ЛАБОРАТОРНОЙ РАБОТЕ №1 | |||||
Вычисление математических выражений | |||||
по дисциплине: Информатика и программирование | |||||
РАБОТУ ВЫПОЛНИЛА | |||||
СТУДЕНТКА ГР. |
4131 |
Платонова А.А. | |||
подпись, дата |
инициалы, фамилия |
Санкт-Петербург
2012
Целью работы является вычисление сложных математических выражений.
Напишите программу для расчёта двух формул. Предварительно подготовьте тестовые примеры по второй формуле с помощью калькулятора (результат вычисления по первой формуле должен совпадать со второй). Значение параметров тригонометрических функций должны задаваться пользователем в градусах.
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
Назначение: главная функция программы
Псевдокод
Нет_Введенного_правильного_
ПокаНет_Введенного_
Запросправильного значения 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) Выводы:
К достоинствам программы можно отнести:
Из недостатков можно отметить: