Лабораторный практикум
.pdfНиже приведена краткая запись последовательности действий при создании консольного приложения.
1.Запуск Visual Studio 2015: «Пуск->Программы->Visual Studio
2015».
2.Создание проекта: «Файл->Создать проект->Project->Win32->
Консольное приложение Win32->Имя: имя файла-> OK».
3.Установка опции простого проекта: «Далее->Пустой проект-
>Готово».
4.Создание файла с кодом программы: «Обозреватель решений->
правая кнопка мыши->Добавить->Создать элемент->Файл С++-> Имя: имя файла -> Добавить».
5.Ввод текста программы.
6.Построение проекта: «Сборка->Собрать решение или нажатием клавиши F7».
7.Выполнение приложения «Отладка->Запуск без отладки или нажатием комбинации клавиш Ctrl+F5».
Порядок выполнения работы
1.Разработать и выполнить программу в соответствии с вариантом задания.
2.Показать результаты работы преподавателю.
3.Защитить выполненную работу, объяснив назначение каждой строки программы.
4.Подготовить отчет.
Требования к отчету
Отчет должен содержать:
1)наименование лабораторной работы;
2)формулировку задания;
3)текст программы для варианта задания;
4)результат выполнения программы (скриншот).
23
Варианты заданий
Номер варианта задания соответствует номеру компьютера в компьютерном классе, на котором выполняется лабораторная работа.
№ |
Задание |
п/п |
|
1Разработать программу для вычисления площади треугольника по введенным сторонам a и b и углу С между ними.
S = 12 absinC
2Разработать программу для вычисления расстояния от точки
М (x1 ,y1) до прямой ax + by + c = 0.
L | ax1 by1 c | a2 b2
3Разработать программу для вычисления объема пирамиды по введенным площади основания S0 и высоте H.
|
V |
1 |
HS0 |
||||
|
3 |
||||||
|
|
|
|
|
|
|
|
4 |
Разработать программу для вычисления полной энергии реляти- |
||||||
|
вистской частицы: |
|
|
|
|
||
|
E |
|
|
mc2 |
|||
|
|
|
|
|
, |
||
|
|
|
|
|
|
||
|
|
|
|||||
|
|
1 (v / c)2 |
где m - масса покоя частицы; c - скорость света в вакууме; v - скорость движения
5Разработать программу для вычисления площади треугольника по введенным длине стороны a и высоте ha.
S 12 aha
6Разработать программу для вычисления объема правильного тетраэдра по введенной длине грани a.
V a3 2 12
24
Продолжение
№ |
Задание |
п/п |
|
7Разработать программу для вычисления площади треугольника по введенным длинам сторон a, b, c (формула Герона).
|
|
|
|
1 |
|
|
S |
p( p a)( p b)( p c) , |
p |
(a b c) |
|||
2 |
||||||
|
|
|
|
|
8Разработать программу для вычисления объема усеченной пирамиды по введенным площадям оснований S, s и высоте H.
V 13 H (S S s s)
9Разработать программу для вычисления площади прямоугольного треугольника по введенным длинам катетов a и b .
S 12 ab
10Разработать программу для вычисления объема октаэдра по введенной длине грани a.
V a3 2 3
11Разработать программу для вычисления кинетической энергии релятивистской частицы.
T mc 2 ( |
|
1 |
|
1) , |
|
|
|
||
|
|
|
1 (v / c)2
где m - масса покоя частицы; c - скорость света в вакууме; v - скорость движения
12Разработать программу для вычисления площади правильного треугольника.
S a2 3 4
13Разработать программу для вычисления объема икосаэдра по введенной длине грани a.
V 125 a3 (3 5)
25
Продолжение
№ |
Задание |
п/п |
|
14Разработать программу для вычисления площади параллелограмма по сторонам a и b и углу α между ними.
S = ab sin
15Разработать программу для вычисления объема додекаэдра по введенной длине грани a.
|
a3 |
|
|
|
|
V |
(15 7 5) |
||||
|
|||||
4 |
|
|
|
16Разработать программу для вычисления площади ромба по введенным длинам диагоналей d1 и d2.
S 12 d1d2
17Разработать программу для вычисления объема цилиндра по введенным радиусу основания R и высоте Н.
V πR2 H
18Разработать программу вычисления объема конуса по введенным радиусу основания R и высоте Н.
V 13 πR2 H
19Разработать программу для вычисления площади поверхности сферы и объема шара радиусом R.
S 4πR2 , V 4πR3
3
20Разработать программу для вычисления объема шарового сектора по введенным радиусу R и высоте H.
V 23 πR2 H
21Разработать программу для вычисления площади полной поверхности шарового сектора по введенным радиусу R и высоте
H.
S πR(2H 2RH H 2 )
26
Окончание
№ |
Задание |
п/п |
|
22Разработать программу для вычисления расстояния между двумя точками: (x1, y1) и (x2, y2).
L (x2 x1)2 ( y2 y1)2
23Разработать программу для вычисления объема усеченного конуса по введенным высоте H и радиусам оснований R и r .
V 13 πH (R2 rR r 2 )
24Разработать программу для вычисления площади правильного шестиугольника по введенному значению радиуса описанной окружности R.
S 6R2 2 sin 26π
25 Разработать программу для вычисления силы притяжения F между телами массы M1 и M2, находящимися на расстоянии R
друг от друга, если F β M1 M 2 , где гравитационная посто-
R2
янная
β = 6,673·10-8 см2/(г с2)
27
Лабораторная работа № 2
Программирование ветвящихся алгоритмов
Цель работы: изучение работы операторов ветвления при программировании ветвящихся алгоритмов; получение практических навыков программирования ветвящихся алгоритмов.
Теоретические сведения
Ветвящийся алгоритм характеризуется необходимостью выбора пути дальнейших вычислений в зависимости от некоторого условия.
Операторы ветвления. Оператор ветвления if. Реализовать ветвление на языке С++ можно с использованием оператора if.
Общий вид оператора:
if (логическое выражение) оператор1; else оператор2;
Можно использовать сокращенную форму записи:
if (логическое выражение) оператор1;
Работает оператор следующим образом. Если логическое выражение истинно, то будет выполнен оператор1, в противном случае, т.е. если логическое выражение ложно, выполнится оператор2, стоящий после ключевого слова else.
При использовании в программе сокращенной формы оператор1 выполнится, если логическое выражение истинно, если оно ложно, то управление перейдет к следующему за if оператору.
Если необходимо выполнение нескольких операторов при истинном или ложном значении логического выражения, то эти операторы заключаются в операторные скобки { } или между ними ставится запятая.
Например:
{ cout << "Верхняя формула" << endl;
28
y = sqrt(pow(tan(log(a*b*b)), 2) + a*a*pow(sin(exp(2 * x + 5)), 2));}
или
cout << "Верхняя формула" << endl,
y = sqrt(pow(tan(log(a*b*b)), 2) + a*a*pow(sin(exp(2 * x + 5)), 2));
Примеры программирования с использованием оператора if
Пример 1. Рассчитать заработную плату рабочего. Если он отработал более 40 ч., то увеличить в 1,5 раза оплату за каждый час перевыполнения.
Решение. Условие задачи можно записать следующим образом:
ЗП почасоваяоплата * количество часов, |
если количество часов 40 |
|
|
1,5* (почасоваяоплата * |
|
ЗП почасоваяоплата * 40 |
||
|
|
|
|
(количество часов 40)), иначе |
|
где ЗП – заработная плата. Текст программы:
#include <iostream> #include <math.h> using namespace std; int main()
{
setlocale(LC_CTYPE,"Russian");
float |
zp, |
//заработная |
плата |
|
hp; |
// почасовая |
оплата |
int |
kh; |
// количество часов |
cout<<"Почасовая оплата>";cin>>hp; cout<<"Количество часов>";cin>>kh;
if(kh>40) zp=hp*40+1.5*hp*(kh-40); else zp=hp*kh; cout<<"Зарплата="<<zp<<endl; return 0;
}
По я сн е н ия к пр о гр ам м е . В программе использована полная форма записи оператора if. Если количество часов kh больше 40, то заработная плата zp будет вычислена по нижней формуле, в противном случае - по верхней формуле.
29
Результаты выполнения программы при различных данных представлены на рис. 1, а, б.
а
б
Рис.1. Результат выполнения программы при вычислении по нижней формуле (а) и по верхней формуле (б)
Пример 2. Определить состояние здоровья. Если температура тела < 37,1 - нормальная, если температура > 38 - жар, в других случаях - повышенная.
Решение. Запишем условие задачи в виде системы неравенств.
t 37,1 |
нормальная , |
|
38 повышенная, |
37,1 t |
|
t 38 |
жар. |
|
|
Схема алгоритма решения данной задачи представлена на рис.2.
30
Пуск |
|
|
Ввод t |
|
|
|
Нет |
|
t < 37,1 |
|
|
Да |
|
|
Нормальная |
|
Нет |
|
t ≥ 38 |
|
|
|
Да
Жар
Повышенная
Останов
Рис.2. Схема алгоритма к примеру 2
Текст программы:
#include <iostream> #include <math.h>
using namespace std; int main()
{
setlocale(LC_CTYPE,"Russian"); double t;
cout<<"Температура>"; cin>>t;
if(t<37.1) cout<<"Нормальная"; else if(t>=38) cout<<"Жар";
else cout<<"Повышенная"; cout<<endl;
return 0;
}
31
По я сн е н ия к пр о гр ам м е . Здесь использовано два оператора if, причем один «вложен» в другой. Если значение переменной t меньше, чем 37,1, то на экран будет выведено сообщение «Нормальная» (рис.3). Если значение t больше или равно 37,1, то будет проведено еще одно сравнение, и если значение t окажется больше 38, то на экране появится сообщение «Жар», в противном случае, т.е. если значение t находится в интервале от 37,1 до 38, то будет выведено сообщение «Повышенная».
Рис.3. Результат выполнения программы при значении t < 37,1
Пример 3. Вычислить значение
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
tg |
2 |
ln ab |
2 |
a |
2 |
sin |
2 |
e |
2x 5 |
, при x ab, |
||||
|
|
|
|
|
|
|
|
||||||||
|
Y |
|
|
|
ax2 |
b4 |
|
arctg a b |
|
||||||
|
tg2 ln |
|
, при x ab. |
||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Здесь условие задачи уже формализовано. |
|||||||||||||||
Текст программы: |
|
|
|
|
|
|
|
|
|
|
|
|
|||
#include <iostream> |
|
|
|
|
|
|
|
|
|
||||||
#include <math.h> |
|
|
|
|
|
|
|
|
|
|
|||||
using |
namespace std; |
|
|
|
|
|
|
int main()
{
setlocale(LC_CTYPE,"Russian"); doublea,b,x,y;
cout<<"a>";cin>>a; cout<<"b>";cin>>b; cout<<"x>"; cin>>x;
if(x<a*b) y = sqrt(pow(tan(log(a*b*b)),2) + a* a* pow(sin(exp(2*x+5)),2));
else y=pow(tan(log(fabs(a*x*x+pow(b,4)))),2) + atan(a+b);
32