Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лабораторный практикум

.pdf
Скачиваний:
48
Добавлен:
15.06.2021
Размер:
3 Mб
Скачать

 

Окончание

Рекуррентное выражение

Другая форма записи

 

s+=i

s=s+i

 

s/=i

s=s/i

 

s*=i

s=s*i

 

Как видно из таблицы, запись i++ и ++i означает одно и то же: увеличение значения i на единицу. Но если в выражении используется i++, то сначала будет вычислено выражение со значением i, а потом i увеличится на единицу. При использовании ++i в выражении сначала значение i увеличится на единицу и только после этого значение i будет использовано для вычисления выражения. Например, пусть а = 4, а y = а + 2. В в этой записи сначала значение а уменьшится на единицу и станет равным 3, а потом вычислится значение y, которое будет равняться 5. Если выражение для вычисления y записать в виде y = a + 2, то сначала вычислится значение y, и оно будет равно 6, а потом уменьшится значение а на единицу и станет равным 3.

Рассмотрим еще один пример. Пусть имеется следующий текст программы:

#include <iostream> using namespace std; int main()

{

int s = 0, a = 3;

for (int i = 0; i < 3; i++) s = a---i;

cout << "s=" << s << endl; return 0;

}

Определим, что в результате выполнения будет выведено на экран. Значение переменных s и a перед переходом к следующему шагу цикла занесем в таблицу.

Значения переменной

Значения пере-

Значения перемен-

i

менной s

ной a

До цикла

0

3

0

3

2

1

1

1

2

1

0

53

Как видно из таблицы, значение s будет равно –1.

Примеры программирования циклических алгоритмов

Пример 1. Вычислить и напечатать множество значений

 

x

1),

x 2,

cos(

 

 

4

 

y

 

 

x

 

 

 

 

 

x ln(

x 4

), x 2.

 

 

 

 

на интервале 0,5 ≤ x ≤ 3 c шагом x = 0,1

Текст программы с использованием оператора цикла while:

#include <iostream> #include <iomanip> #include <math.h> using namespace std; void main()

{

setlocale(LC_CTYPE, "Russian"); float x = 0.5, dx = 0.1, y; while (x <= 3)

{

if (x>2) y = cos(x / 4 + 1); else y = x + log(x / (x + 4));

cout << setw(4) << left << x << setw(10) << right << setprecision(2) << y << endl;

x += dx;

}

}

Текст программы с использованием оператора цикла do:

#include <iostream> #include <iomanip> #include <math.h> using namespace std; void main()

{

setlocale(LC_CTYPE, "Russian"); float x = 0.5, dx = 0.1, y;

do

{

if (x>2) y = cos(x / 4 + 1);

54

else

y = x + log(x /

(x +

4));

cout

<< setw(4) <<

left

<< x << setw(10)

<<right << setprecision(2) << y << endl;

x+= dx;

}while (x <= 3);

}

Текст программы с использованием оператора цикла for:

#include <iostream> #include <iomanip> #include <math.h> using namespace std; void main()

{

setlocale(LC_CTYPE, "Russian"); float x, dx = 0.1, y;

for( x=0.5;x<=3;x+=dx)

{

if (x>2) y = cos(x / 4 + 1); else y = x + log(x / (x + 4));

cout <<setw(4) << left <<x << setw(10) << right << setprecision(2) << y << endl;

}

}

По я сн е н ия к пр о гр а м м ам . В каждой программе использован тип возвращаемого результата void у функции main - это означает, что функция не возвращает значение и не надо использовать оператор return.

При выводе результатов были использованы манипуляторы, прототипы которых находятся в заголовочном файле iomanip. Назначение каждого манипулятора представлено ниже.

Манипуляторы:

setw(n) - устанавливает ширину n позиций поля вывода; right - выравнивание по правой стороне;

left - выравнивание по левой стороне;

setprecision(n) - устанавливает количество цифр n, отличных от нуля при выводе вещественных чисел.

55

В результате выполнения любой из программ на экран будет выведено множество значений x и y. Каждая пара значений x и у будет выведена в отдельной строке (рис.1).

Рис.1. Результат выполнения программы к примеру 1

Пример 2. Определить рост самого высокого человека среди вводимых с клавиатуры значений. Признаком окончания ввода служит 0.

Текст программы:

#include <iostream> #include <iomanip> #include <math.h> using namespace std; int main()

{

setlocale(LC_CTYPE, "Russian");

56

float n = 0, max = -1; do

{

cout << "Рост>"; cin >> n;

if (n>max)max = n; } while (n>0);

cout<<"Рост самого высокого человека="<<max<<endl;

}

П о я с н е н ия к пр о гр ам м е . До цикла зададим начальные значе-

ния:

для переменной n = 0, т.е. признак окончания ввода данных или самый минимальный рост человека;

для переменной max = 1, пусть значение самого максимального роста будет равно 1.

Далее в цикле, пока не будет введен 0, вводится значение n, и оно сравнивается со значением max. Если текущее значение n будет больше значения max, то в переменную max занесем значение n.

Результат выполнения программы представлен на рис.2.

Рис.2. Результат выполнения программы к примеру 2

Пример 3. Определить среднюю стоимость авторучки среди значений цен, вводимых с клавиатуры. Признаком окончания ввода данных служит 0.

Решение. Для нахождения средней стоимости авторучки воспользуемся формулой определения среднего арифметического значения по-

57

следовательности чисел. Для этого необходимо найти сумму стоимостей всех авторучек и поделить ее на количество авторучек.

Текст программы:

#include <iostream> using namespace std; void main()

{

setlocale(LC_CTYPE, "Russian"); double n = 0, sum = 0.0;

int k = 0; do

{

cout << "Стоимость авторучки>"; cin >> n;

sum += n; k += 1; } while (n>0);

sum /= k;

cout << "Средняя стоимость=" << sum << endl;

}

По я сн е н ия к пр о гр ам м е . В программе объявлены три переменные: n - переменная для хранения текущего значения стоимости авторучки; переменная sum - для вычисления суммы стоимостей всех авторучек и переменная k - для вычисления количества авторучек. В цикле do, пока значение n положительно, а стоимость не может быть выражена отрицательным значением, вводится текущее значение стоимости, это значение прибавляется к имеющемуся значению суммы и увеличивается значение количества авторучек на единицу. После ввода значения «нуль» вычисляется и выводится на экран среднее арифметическое значение, которое и равно средней стоимости ручки. Результат выполнения программы представлен на рис.3.

58

Рис.3. Результат выполнения программы к примеру 3

Порядок выполнения работы

1.Разработать и выполнить программы в соответствии с вариантом задания. В данной работе выполняется два задания.

2.Результаты выполнения программ занести в отчет по работе.

3.Показать результаты работы преподавателю.

Требования к отчету

Отчет должен содержать:

1)наименование лабораторной работы;

2)формулировки заданий;

3)тексты программ для варианта задания;

4)результаты выполнения программ.

59

Варианты заданий

Блок № 1

Написать программу вычисления множества значений функции в соответствии с номером варианта. Номер варианта задания соответствует номеру компьютера в компьютерном классе, на котором выполняется лабораторная работа.

Задание

п/п

 

1

 

 

 

sin s

 

 

 

 

| πs | 3,5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Дано: i = 4; π = 3,14;

 

 

 

 

 

s

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

y

3

 

 

 

 

 

| πs | 3,5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

tgi

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

s

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

на интервале 1 ≤ s ≤ 1с шагом

s = 0,1

 

 

 

 

 

 

 

 

2

 

 

 

αt 2 ln t

1 t 2

 

 

 

 

Дано: = – 0,5; b = 2;

 

 

 

 

 

 

 

 

 

 

 

 

 

t 1

 

 

 

 

 

 

 

 

y 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

αt

 

 

 

 

 

 

t 2

 

 

 

 

 

 

 

 

 

 

 

e

cos bt

 

 

 

 

 

 

 

 

на интервале t[0; 3]с шагом

t = 0,15

 

 

 

 

 

 

 

 

3

 

2

 

7

 

 

 

 

 

x 1,3

 

 

 

 

 

 

 

 

 

πx

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

7

 

 

 

 

 

 

 

 

 

x 1,3

 

 

 

 

 

 

 

 

Дано: a = 1,5;

 

x

 

 

 

 

 

 

 

 

 

 

 

y ax

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

lg(x 7

 

 

 

x )

x 1,3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

на интервале x[0,8; 2] с шагом

 

 

x = 0,1

 

 

 

 

 

 

 

 

4

 

 

 

 

 

 

 

 

 

 

 

ax2

bx c

 

 

 

x 1,2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a

 

 

 

 

 

 

 

 

 

 

 

Дано: a = 2,8; b = –0,3; c = 4; w

 

 

x

2

1

 

 

 

x 1,2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x

2

1

x 1,2

 

 

 

 

 

 

 

 

 

 

 

 

(a bx) /

 

 

на интервале x[1; 2] с шагом

x = 0,05

 

 

 

 

 

 

 

 

60

Продолжение

 

 

 

 

 

 

 

 

 

 

Задание

 

п/п

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

5

 

 

 

 

 

2

 

 

 

7

 

 

 

 

 

 

x 1,4

 

 

 

πx

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3

7

 

 

 

 

 

 

 

x 1,4

 

 

 

 

 

 

 

x

 

 

 

Дано: a = 1,65; Q ax

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ln(x 7

 

 

| x

a |)

x 1,4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

на интервале x[0,7; 2] с шагом

x = 0,1

6

 

 

1,5cos 2 x

 

 

 

 

 

x 1

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

Дано: a = 2,3; y

 

 

2)

 

6

1 x 2

 

(x

 

 

 

 

 

 

3tgx

 

 

 

 

 

 

 

 

 

 

 

x 2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

на интервале x[0,2; 2,8] с шагом x = 0,2

7

 

 

x3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x a

 

 

 

 

 

 

x a

 

 

Дано: a = 2,5; w

 

 

 

 

 

 

 

 

 

 

 

 

 

x a

 

 

x sin ax

 

 

 

 

 

 

 

 

 

e ax cos ax

 

 

 

x a

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

на интервале x[1; 5] с шагом

x = 0,1

8

 

 

bx lg bx

 

 

bx 1

 

 

Дано: b = 1,5; Q

1

 

 

 

 

 

 

 

 

 

 

 

 

bx 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

bx

 

 

 

 

 

 

 

 

bx 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

на интервале x[1,1; 1] с шагом

x = 0,1

9

 

sin x lg x

x 3,5

 

 

 

 

 

 

 

 

 

Дано:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

y

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

cos 2 x

 

x

3,5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

на интервале x[2; 5] с шагом

x = 0,25

10

 

 

lg(x 1)

 

 

x 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Дано: a = 20,3; y

 

 

2

 

 

 

 

 

 

 

 

 

 

x 1

 

 

 

 

sin

 

 

| ax |

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

на интервале x[0,5; 2] с шагом

x = 0,2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

61

Продолжение

 

 

 

 

 

 

Задание

 

 

 

 

 

 

 

 

 

 

п/п

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

11

 

(ln3 x x2 ) /

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x t

x 0,5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Дано: t = 2,2;

z x

t

 

 

 

 

 

 

 

 

 

 

 

 

 

x 0,5

 

 

 

 

 

x

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

cos x t sin2 x

 

 

 

 

 

 

x 0,5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

на интервале x[0,2; 2] с шагом

 

 

x = 0,2

 

 

 

 

12

 

 

 

 

 

 

 

 

 

a b

 

 

 

 

 

x 2,8

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ex

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

cos x

 

 

 

 

 

Дано: a = 2,6; b = 0,39; S (a b) /(x 1)

2,8 x 6

 

 

 

 

 

 

 

 

 

x

 

sin x

 

 

 

 

 

 

 

x 6

 

 

 

 

 

 

 

 

 

e

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

на интервале x[0; 7] с шагом

x = 0,5

 

 

 

 

 

 

 

 

 

 

13

 

a lg x 3

 

 

 

 

 

 

 

 

x 1

 

 

 

 

 

 

 

 

 

 

 

| x |

 

 

 

 

 

 

 

 

 

 

 

 

 

Дано: a = 0,9;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

y

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2a cos x 3x2

 

 

 

x 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

на интервале x[0,8; 2] с шагом

 

 

x = 0,1

 

 

 

 

14

 

 

 

 

 

 

2

1

 

 

 

 

 

 

 

2

1

 

 

 

 

 

 

 

a sin(

i

 

)

 

sin(

i

 

) 0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Дано: a = 0,3; n = 10;

 

 

 

 

n

 

 

 

 

 

 

 

n

 

z

 

 

 

 

 

 

 

 

 

 

 

i2 1

 

 

 

 

 

 

cos(i

1

)

 

sin(

) 0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

n

 

 

 

 

 

 

 

n

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

на интервале i[0; 10] с шагом

 

i = 1

 

 

 

 

 

 

 

 

 

 

15

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

at 2

 

b sin t 1

t 0,1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Дано: a = 2,5; b = 0,4;

w

 

 

 

 

 

 

 

 

 

 

 

 

 

t 0,1

 

at b

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

b cos t 1

 

t 0,1

 

 

 

 

 

 

at 2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

на интервале t[ 1; 1] с шагом

 

t = 0,2

 

 

 

 

62