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

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

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

Продолжение

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Задание

п/п

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

16

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

π sin s

| πs | 3,5

 

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

 

y

 

 

 

 

 

 

 

 

 

 

 

 

3 π s

| πs | 3,5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

stgi

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

s = 0,1

17

 

 

 

c k

 

 

sin k lgc

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Дано: k = 2; γ 25

c k

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

sin k lgc

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

на интервале 10 ≤ c ≤ 20 с шагом

c = 5

18

 

 

 

4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a 7

 

 

 

 

 

 

 

 

 

 

 

sin an 0

 

Дано: n = 7;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

y

 

 

 

 

 

a

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

sin an 0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a

 

 

 

 

cos n

 

 

 

 

на интервале 2 ≤ a ≤ 12 с шагом

a = 1,5

19

 

 

 

 

 

 

 

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

γ 5

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

cos k γ

 

Дано: k = 13; s

2cos k

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

cos k γ2

 

 

 

k k

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

на интервале 0,8 ≤ γ ≤ 12 с шагом Δγ = 0,01

20

 

ln tg3τ

 

 

cos τi

0,98

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Дано: i = 3;

y

3

 

 

 

 

 

 

cos τi 0,98

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

 

 

 

e

sini

 

 

 

 

 

 

 

 

на интервале 1 ≤ τ ≤ 12 с шагом Δτ = 0,5

21

 

a 2

 

sin a cos a 0,25

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Дано: m = 6; a 3

 

a

 

sin a cos a 0,25

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3tgm

 

 

 

 

 

 

 

 

на интервале 5 ≤ a ≤ 10 с шагом

a = 1

63

Окончание

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Задание

 

 

 

 

 

п/п

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

22

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

π

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

7 2a 1

 

sin(a 1)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3

 

 

 

Дано: j = 7; z

 

 

a 2

 

 

 

 

 

 

π

 

 

 

 

 

 

 

 

sin(a 1)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

sin a cos j

 

 

 

 

 

на интервале 5 ≤ a ≤ 10 с шагом

a = 0,5

 

 

 

23

 

 

3

 

 

 

 

 

 

 

sin k cos k

 

sin x

 

 

Дано: k = 12;

 

 

 

 

 

x k

 

 

 

 

 

 

 

 

 

 

p

 

 

 

 

 

sin k cos k

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2tg(3x

2)

 

 

 

 

 

 

 

на интервале 2 ≤ x ≤ 2 с шагом

x = 0,05

24

 

 

 

 

2tgc

 

ln j с

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Дано: j = 27;

β c5 c j

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ln j c

 

 

 

 

 

 

 

 

j c j

 

 

 

 

 

 

 

на интервале 10 ≤ c ≤ 10 с шагом c = 2

25

 

2 i i

tgγ 2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Дано: i = 12;

t 5

 

γ i

tgγ 2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

γ sin i

 

 

 

 

 

 

 

 

 

 

на интервале 0,8 ≤ γ ≤ 0,8 с шагом Δγ = 0,01

 

Блок № 2

 

 

Задание

п/п

 

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

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

64

 

Продолжение

Задание

п/п

 

 

 

3

Ввести с клавиатуры последовательность чисел. Признаком

 

окончания ввода служит число –10. Определить среднее

 

арифметическое положительных чисел

4

Ввести с клавиатуры последовательность чисел. Признаком

 

окончания ввода служит число 3. Определить количество чи-

 

сел, больших первого введенного числа

5

Ввести с клавиатуры последовательность чисел. Признаком

 

окончания ввода служит число 0. Определить сумму отрица-

 

тельных чисел

6

Ввести с клавиатуры последовательность чисел. Признаком

 

окончания ввода служит число 0. Определить количество от-

 

рицательных чисел

7

Ввести с клавиатуры последовательность чисел. Признаком

 

окончания ввода служит число 10. Определить количество

 

положительных чисел

8

Ввести с клавиатуры последовательность чисел. Признаком

 

окончания ввода служит число 3. Определить количество

 

чисел, равных 0

9

Ввести с клавиатуры последовательность чисел. Признаком

 

окончания ввода служит число 0. Определить номер и значе-

 

ние минимального числа

10

Ввести с клавиатуры последовательность чисел. Признаком

 

окончания ввода служит число 6. Определить наибольшее

 

значение среди введенных чисел

11

Ввести с клавиатуры последовательность чисел. Признаком

 

окончания ввода служит число 10. Определить количество

 

чисел, равных 0

12

Ввести с клавиатуры последовательность чисел. Признаком

 

окончания ввода служит число 3. Определить среднее ариф-

 

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

13

Ввести с клавиатуры последовательность чисел. Признаком

 

окончания ввода служит число 0. Определить сумму положи-

 

тельных чисел

65

 

Продолжение

Задание

п/п

 

 

 

14

Ввести с клавиатуры последовательность чисел. Признаком

 

окончания ввода служит число 5. Определить среднее ариф-

 

метическое отрицательных чисел

15

Ввести с клавиатуры последовательность чисел. Признаком

 

окончания ввода служит число 3. Определить количество

 

чисел, больших 4

16

Ввести с клавиатуры последовательность чисел. Признаком

 

окончания ввода служит число 99. Определить количество

 

чисел, больших введенного первого числа

17

Ввести с клавиатуры последовательность чисел. Признаком

 

окончания ввода служит число 10. Определить среднее ариф-

 

метическое чисел, меньших введенного первого числа

18

Ввести с клавиатуры последовательность чисел. Признаком

 

окончания ввода служит число 7. Определить среднее ариф-

 

метическое отрицательных чисел

19

Ввести с клавиатуры последовательность чисел. Признаком

 

окончания ввода служит число 8. Определить количество чи-

 

сел, больших первого введенного числа

20

Ввести с клавиатуры последовательность чисел. Признаком

 

окончания ввода служит число 0. Определить произведение

 

отрицательных чисел

21

Ввести с клавиатуры последовательность чисел. Признаком

 

окончания ввода служит число 10. Определить сумму отрица-

 

тельных чисел

22

Ввести с клавиатуры последовательность чисел. Признаком

 

окончания ввода служит число 10. Определить произведение

 

положительных чисел

23

Ввести с клавиатуры последовательность чисел. Признаком

 

окончания ввода служит число 3. Определить количество

 

чисел, кратных 3

24

Ввести с клавиатуры последовательность чисел. Признаком

 

окончания ввода служит число 2. Определить номер и значе-

 

ние максимального числа

66

Окончание

Задание

п/п

 

25Ввести с клавиатуры последовательность чисел. Признаком окончания ввода служит число 9. Определить количество чисел, равных 5

67

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

Программирование задач с использованием одномерных массивов

Цель работы: изучение возможности программирования задач с использованием массивов; получение практических навыков программирования задач с использованием одномерных массивов.

Теоретические сведения

Массив - это упорядоченный набор однотипных переменных, которым присвоено одно имя. Члены этого набора называются компонентами или элементами массива. Каждый элемент массива определяется именем массива и своим порядковым номером, называемым индексом. Номер первого элемента массива в языке С++ всегда равен нулю. Элементы массива располагаются в памяти компьютера последовательно один за другим:

А0

А1

А2

А3

А4

А5

А6

Аn 1

 

 

 

 

 

 

 

 

 

Описание массива. Общий вид описания одномерного массива:

тип идентификатор[количество элементов];

Доступ к элементу массива по его индексу:

имя_массива [индекс]

Примеры описания:

/* целочисленный массив из 10 элементов. Индекс первого элемента массива а равен нулю, а последнего- 9*/ int a[10];

// вещественный массив из 15 элементов double mas[15];

68

Задать начальные значения для элементов массива можно несколькими способами:

инициализировать элементы массива, т.е. в программе задать численные значения;

ввести значения элементов массива с клавиатуры;

сформировать элементы массива с помощью датчика случайных чисел.

Инициализация элементов массива:

тип идентификатор[количество_элементов] = {значение1, значение 2, …,

значение кол-во элементов}

Пример инициализации:

int a[5]={2,6,-1,2,4};

Формирование значений для элементов массива с клавиатуры.

Ввод значений элементов массива с клавиатуры можно выполнить с помощью оператора цикла for, в котором параметр цикла меняется от нуля до количества элементов массива 1. В представленном ниже фрагменте программы приведен один из вариантов ввода пяти значений элементов целочисленного массива a:

int a[5];

cout<<"Введите элементы массива через пробел>";

for(int i=0;i<5;i++) cin>>a[i];

Ввод значений элементов массива с помощью датчика случай-

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

Перед использованием функции rand(), возвращающей случайное число в диапазоне от 0 до 32767, необходимо инициализировать работу данной функции с помощью srand((unsigned) time(NULL));, включив директиву препроцессору #include <time.h>

Фрагмент программы, формирующей одномерный массив из пяти целочисленных значений с помощью датчика случайных чисел:

int a[5]; srand((unsigned)time(NULL));

for(int i=0;i<5;i++) a[i]=rand()/100-100;

69

В данном фрагменте полученное случайное число с помощью функции rand() делится на 100 и от полученного результата отнимается 100. Это делается для того, чтобы значение элемента массива могло быть отрицательным (вычитание 100) и меньшего порядка, чем то значение, которое возвращает функция rand().

Вывод значений элементов массива на экран. Для вывода элементов массива на экран также используется цикл. Фрагмент программы с выводом пяти элементов массива а:

for(int i=0;i<5;i++)cout<<a[i]<<setw(4); cout<<endl;

В данном фрагменте в строку выводятся элементы массива, после вывода последнего элемента массива курсор на экране переводится на новую строку с помощью оператора cout<<endl;

Типовые задачи программирования с использованием одно-

мерных массивов. К типовым задачам программирования с использованием одномерных массивов можно отнести:

1.Нахождение суммы элементов массива.

2.Вычисление произведения элементов массива.

3.Вычисление среднего арифметического значения.

4.Нахождение минимального (максимального) элемента массива.

Нахождение суммы элементов массива. Для нахождения суммы

всех элементов массива необходимо до оператора цикла задать начальное значение суммы, равное нулю, и затем в цикле, используя рекуррентное выражение для нахождения суммы, найти искомое значение:

int s=0; // начальное значение суммы //вычисление суммы

for(int i=0;i<5;i++)s+=a[i];

// вывод на экран значения суммы cout<<"summa>"<<s<<cout<<endl;

Вычисление произведения элементов массива. Произведение всех элементов массива находится аналогично вычислению суммы, за исключением того, что начальное значение произведения равно единице и в рекуррентном выражении вместо знака «+» используется знак умножения «*»:

int p=1;

for(int i=0;i<5;i++)p*=a[i]; cout<<"summa>"<<p<<cout<<endl;

70

Вычисление среднего арифметического значения. Для вычисле-

ния среднего арифметического значения элементов массива найденное значение суммы необходимо разделить на количество элементов массива:

int s=0;

for(int i=0;i<5;i++)s+=a[i]; double sr_ar=s/5;

Нахождение минимального элемента массива. За начальное зна-

чение минимального элемента, как правило, принимают значение первого элемента. Далее в цикле ищется действительно минимальный элемент путем сравнения текущего элемента массива с «якобы» минимальным:

// начальное значение минимального элемента int min=a[0];

for(int i=0;i<n;i++)

// поиск действительно минимального if(a[i]<min) min=a[i];

Примеры программирования

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

Решение. Сформируем одномерный массив с использованием датчика случайных чисел. Поскольку заранее неизвестно, сколько положительных элементов в массиве, то при организации цикла для нахождения суммы положительных элементов выполним подсчет количества положительных элементов. Далее вычислим среднего арифметическое значение путем деления значения суммы на количество таких элементов массива и полученный результат выведем на экран (рис.1).

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

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

71

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

{

setlocale(LC_CTYPE, "Russian"); srand((unsigned)time(NULL)); int a[5];

double sr_ar = 0;

for (int i = 0; i<5; i++) a[i]=rand() / 100 - 100; cout << "Массив>";

cout << endl;

for (int i = 0; i<5; i++)cout << a[i] << setw(10); cout << endl;

int kol = 0; double s = 0;

for (int i = 0; i<5; i++)

{

if (a[i] >= 0)

{

s += a[i]; kol += 1;

}

}

sr_ar = s / kol;

cout << "Среднее арифметическое значение положительных элементов=" << sr_ar << endl;

}

Пример 2. Написать программу нахождения максимального элемента и его порядкового номера.

Решение. Зададим начальные значения максимального элемента и его порядкового номера, равные первому элементу массива и нулю соответственно. Далее в цикле, если текущий элемент массива окажется больше «якобы» максимального, то пусть теперь этот элемент будет максимальным и номер максимального элемента будет равен индексу этого элемента массива. После цикла выведем значение максимального элемента и его порядковый номер на экран (рис.2).

72