4382

Программирование арифметических выражений на С++

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

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

Программирование арифметических выражений на С++ Цель: усвоить, что такое линейные алгоритмы научиться создавать блок-схемы ознакомиться с математическими функциями. Теоретический материал В С++ можно делать различные математические расчёты, поэто...

Русский

2012-11-18

176.5 KB

17 чел.

Программирование арифметических выражений на С++

Цель: усвоить, что такое линейные алгоритмы; научиться создавать блок-схемы; ознакомиться с математическими функциями.

Теоретический материал

В С++ можно делать различные математические расчёты, поэтому разработчиками были созданы математические функции, которые находятся в заголовочном файле math.h. В таблице 3.1 приведены некоторые часто используемые математические функции.

Таблица 3.1: Некоторые математические функции

Функция в

Описание

Пример использования

программировании

математике

sqrt( x )

Корень из х

double a = 900;

double b = 9;

double res = 0;

res = sqrt(a);

// res = 30.0

res = sqrt(b);

// res = 3.0

exp(x)

Экспоненциальная функция

double a = 1;

double b = 2;

double res = 0;

res = exp(a);

// res = 2.718282

res = exp(b);

// res = 7.389056

pow(x,y)

x в степени y

double x=2;

float y=7;

double res = 0;

res = pow(x,y);

// res = 128.0

x = 9;

y = 0.5;

res = pow(x,y);

// res = 3.0

log(x)

логарифм натуральный х (по основанию е)

double x = 2.718282;

double y = 7.389056;

double res = 0;

res = log(x);

// res = 1.0

res = log(y);

// res = 2.0

log10(x)

логарифм десятичный х (по основанию е)

double x = 1.0;

double y = 10.0;

double z = 100.0;

double res = 0;

res = log10(x);

// res = 0.0

res = log10(y);

// res = 1.0

res = log10(z);

// res = 2.0

fabs(x)

абсолютное значение х (для чисел с плавающей точкой с запятой)

double x = 17.3;

double y = -13.6;

double z = 0.0;

double res = 0;

res = fabs(x);

// res = 17.3

res = fabs(y);

// res = 13.6

res = fabs(z);

// res = 0.0

abs(x)

абсолютное значение х (для целочисленных значений)

double x1 = 0.3;

double y1 = -13.6;

double z1 = 0.0;

double res1 = 0;

res = fabs(x1);

// res = 0

res = fabs(y1);

// res = 13

res = fabs(z1);

// res = 0

int x2 = 7;

int y2 = -43;

int z2 = 0;

int res2 = 0;

res = fabs(x2);

// res = 7

res = fabs(y2);

// res = -43

res = fabs(z2);

// res = 0

ceil(x)

округление х до наименьшего целого, не меньшего чем х

double x = 9.2;

double y = -9.8;

double res = 0;

res = ceil(x);

// res = 10.0

res = ceil(y);

// res = -9.0

floor(x)

округление х до наибольшего целого, не большего чем х

double x = 9.2;

double y = -9.8;

double res = 0;

res = floor(x);

// res = 9.0

res = floor(y);

// res = -10.0

fmod(x,y)

остаток х/у, как число с плавающей точкой

double x = 13.657;

double y = 2.333;

double res = 0;

res = fmod(x,y);

// res = 1.992

sin(x)

синус х, где х в радианах

double x = 0.0;

res = sin(x);

// res = 0.0

cos(x)

косинус х, где х в радианах

double x = 0.0;

res = cos(x);

// res = 1.0

tan(x)

тангенс х, где х в радианах

double x = 0.0;

res = tan(x);

// res = 0.0

asin(x)

арксинус х, где х в радианах

double x = 0.0;

res = asin(x);

// res = 0.0

acos(x)

арккосинус х, где х в радианах

double x = 0.0;

res = acos(x);

// res = 1.5708

Для использования математических функций необходимо подключить заголовочный файл math.h, в котором находятся все выше перечисленные функции. Заголовочный файл подключается в начале программы с помощью директивы

#include “имя_заголовочного_файла.h

Обычно функция вызывается путём записи имени функции, после которой записывается левая круглая скобка, затем аргумент функции (или список аргументов, разделённых запятыми), а завершает запись правая круглая скобка. Например, если нам необходимо вычислить корень из числа 25, то можно было бы написать:

cout<<sqrt(25);

После выполнения этого оператора вызывается библиотечная функция sqrt, которая вычисляет корень квадратный из числа 25. Само число 25 будет являться аргументом функции sqrt, а sqrt — имя функции. После выполнения оператора вывода на экране должно отобразиться число 5.

Замечание: все функции в математической библиотеке возвращают данные типа double.

Кроме того, аргументами функции могут быть константы, переменные и выражения. Например, мы могли бы вычислить корень квадратный из выражения 5-9+(34-15)*2+2. При подсчёте выражения получится число 36. Записать это выражение в функцию можно следующим образом:

cout<<sqrt(5-9+(34-15)*2+2);

Результатом работы оператора cout — вывод числа 6 на экран.

Ход работы

  1.  Запускаем программы С++.
  2.  Создаём новый проект, даём ему имя.
  3.  Сохраняем проект.
  4.  Добавляем Source File и даём ему имя.
  5.  Сохраняем файл.
  6.  Пишем «скелет программы»

1

#include “iostream.h”

2

int main()

3

{

4

.

.

.

return 0;

}

  1.  Компилируем программу, собираем проект и проверяем на наличие ошибок.
  2.  Разберём следующее алгоритмическое выражение:
  3.  
  4.  В выражении используется три переменных (x, y, z). Результат записывается в переменную a. Поэтому для начала необходимо объявить наши переменные и определить их типы: x вещественное, y вещественное и z целое. Переменная a будет вещественным числом.
  5.  В теле функции main объявим и инициализируем переменные, которые будем использовать.

4

// объявление переменных

5

double x = 0.15;

6

double y = 61.8;

7

int z = -2;

8

double a = 0;

  1.  Для простоты понимания разделим наше алгоритмическое выражение на несколько простых выражений (рис.3.1)

Рис.3.1: Упрощение задачи путём дробления её на более меньшие

Итак, появились новые переменные A, B, C. Теперь выражение будет иметь вид:

. Объявим новые вспомогательные переменные, которые нам понадобятся для расчётов.

9

10

// объявление вспомогательных переменных

11

double A = 0;

12

double B = 0;

13

double C = 0;

  1.  Воспользовавшись таблицей 2.1, напишем код расчёта выражения A, B, C:

14

15

// расчёт выражений A, В, С

16

A = 3+exp(y-1);

17

B = sin(1+pow((y-x),3));

18

C = 1+pow(x,2)*fabs(y-tan(z));

  1.  Теперь получим результат и выведем его на экран:

19

20

// расчёт и вывод результата

21

a=A/C+B;

22

cout<<”a = ”<<a<<”\n”;

  1.  Скомпилируйте код программы, соберите проект и запустите на выполнение.
  2.  Теперь запрограммируйте то же самое выражение, но в одну строку. Результат вывести на экран. Результаты решения выражения первым и вторым способами должны совпадать.
  3.  В таблице 3.2 представлены варианты заданий по списку в журнале. Создайте новый проект, сделайте расчёты для своего варианта. Пользователь должен иметь возможность вводить переменные с клавиатуры. В программе обязательно должны присутствовать комментарии и условие вашего задания по списку в журнале.

Таблица 3.2: Задания к выполнению лабораторной работы

№ варианта по списку

Выражение

Переменные

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

Содержание отчёта

  1.  Тема и номер лабораторной работы.
  2.  Цель работы.
  3.  Ход работы.
  4.  Код программы, который обязательно должен содержать комментарии и условие задачи.
  5.  Исходный код программы со всем проектом в целом в электронном виде.
  6.  Выводы по проделанной лабораторной работе.


 

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

22544. Главные оси инерции и главные моменты инерции 157 KB
  Главные оси инерции и главные моменты инерции. Как уже известно зная для данной фигуры центральные моменты инерции и можно вычислить момент инерции и относительно любой другой оси. Именно можно найти систему координатных осей для которых центробежный момент инерции равен. В самом деле моменты инерции и всегда положительны как суммы положительных слагаемых центробежный же момент может быть и положительным и отрицательным так как слагаемые zydF могут быть разного знака в зависимости от знаков z и у для той или иной площадки.
22545. Прямой чистый изгиб стержня 99.5 KB
  Прямой чистый изгиб стержня При прямом чистом изгибе в поперечном сечении стержня возникает только один силовой фактор изгибающий момент Мх рис. Так как Qy=dMx dz=0 то Mx=const и чистый прямой изгиб может быть реализован при загружении стержня парами сил приложенными в торцевых сечениях стержня. Сформулируем предпосылки теории чистого прямого изгиба призматического стержня. Для этого проанализируем деформации модели стержня из низкомодульного материала на боковой поверхности которого нанесена сетка продольных и поперечных рисок...
22546. Прямой поперечный изгиб стержня 122 KB
  Прямой поперечный изгиб стержня При прямом поперечном изгибе в сечениях стержня возникает изгибающий момент Мх и поперечная сила Qy рис. 1 которые связаны с нормальными и касательными напряжениями Рис. Связь усилий и напряжений а сосредоточенная сила б распределеннаяРис. Однако для балок с высотой сечения h l 4 рис.
22547. Составные балки и перемещения при изгибе 77.5 KB
  Составные балки и перемещения при изгибе ПОНЯТИЕ О СОСТАВНЫХ БАЛКАХ Работу составных балок проиллюстрируем на простом примере трехслойной балки прямоугольного поперечного сечения. Это означает что моменты инерции и моменты сопротивления трех независимо друг от друга деформирующихся балок должны быть просуммированы Если скрепить балки сваркой болтами или другим способом рис. 1 б то с точностью до пренебрежения податливостью наложенных связей сечение балки будет работать как монолитное с моментом инерции и моментом сопротивления...
22548. Напряжения и деформации при кручении стержней кругового поперечного сечения 130.5 KB
  Напряжения и деформации при кручении стержней кругового поперечного сечения Кручением называется такой вид деформации при котором в поперечном сечении стержня возникает лишь один силовой фактор крутящий момент Мz. Крутящий момент по определению равен сумме моментов внутренних сил относительно продольной оси стержня Oz. С силами лежащими в плоскости поперечного сечения стержня интенсивности этих сил касательные напряжения и Мz связывает вытекающее из его определения уравнение равновесия статики рис. 1 Условимся считать Mz...
22549. Практические примеры расчета на сдвиг. Заклепочные соединения 58.5 KB
  Заклепки во многих случаях уже вытеснены сваркой; однако они имеют еще очень большое применение для соединения частей всякого рода металлических конструкций: стропил ферм мостов кранов для соединения листов в котлах судах резервуарах и т. В них закладывается нагретый до красного каления стержень' заклепки с одной головкой; другой конец заклепки расклепывается ударами специального молотка или давлением гидравлического пресса клепальной машины для образования второй головки. Мелкие заклепки малого диаметра меньше 8 мм ставятся в...
22550. Расчет заклепок на смятие и листов на разрыв 93.5 KB
  1 указана примерная схема передачи давлений на стержень заклепки. Принято считать что неравномерное давление передающееся на поверхность заклепки от листа распределяется равномерно по диаметральной плоскости сечения заклепки. При этом напряжение по этой диаметральной плоскости оказывается примерно равным наибольшему сминающему напряжению в точке А поверхности заклепки. Передача давлений на стержень заклепки.
22551. Расчет сварных соединений 91.5 KB
  Этим обеспечивается высокое качество металла сварного шва механические свойства которого могут резко ухудшиться под влиянием кислорода и азота воздуха при отсутствии обмазки или при тонкой обмазке. При проверке прочности сварных швов учитывается возможный непровар в начале шва и образование кратера в конце. Поэтому расчетная длина шва принимается меньшей чем действительная или проектная на 10 мм. Здесь условная рабочая площадь сечения шва где расчетная длина шва а высота шва h принимается равной толщине свариваемых элементов t.
22552. Косой изгиб призматического стержня 58 KB
  Например дифференциальное уравнение изгиба стержня является нелинейным и вытекающая из него зависимость прогиба f от нагрузки Р для консольной балки изображенной на рис. 1 а также является нелинейной рис. Однако если прогибы балки невелики f l настолько что dv dz2 1 так как dv dz f l то дифференциальное уравнение изгиба становится линейным как видно из рис. а расчетная схема б линейное и нелинейное сопротивленияРис.