Файл: Лабораторная работа Программирование циклических вычислительных процессов Для функции.pdf

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 23.11.2023

Просмотров: 185

Скачиваний: 3

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Лабораторная работа № 1. Программирование циклических
вычислительных процессов
Для функции
|
|
sin
2
)
(
2 3
x
x
xe
x
x
f
x


+
=
составить программу по- строения таблицы значений функции при изменении аргумента от
5

=
A
до
5
=
B
с шагом
1
,
0
=
H
Значения A, B и H объявить как константы в ди- рективах #define. В каждой строке выводить значение аргумента и соот- ветствующее ему значение функции в форматированном виде с 4 знаками после запятой. Кроме того, в конце таблицы нужно напечатать отдельной строкой значение, которое требуется вычислить в соответствии с индиви- дуальным вариантом.
Уровень A
Варианты заданий
A1.
Среднее арифметическое всех отрицательных значений функции.
A2.
Сумма таких значений функции, которые находятся на отрезке от М до N.
A3.
Среднее арифметическое таких значений функции, которые находятся на отрезке от М до N.
A4.
Среднее арифметическое таких значений функции, которые больше числа М.
A5.
Среднее арифметическое всех неотрицательных значений функции.
A6.
Количество всех отрицательных значений функции.
A7.
Количество таких значений функции, которые находятся на отрезке от М до N.
A8.
Количество всех неотрицательных значений функции.
A9.
Среднее арифметическое таких значений функции, которые меньше числа М.
A10.
Сумма таких значений функции y=f(x), для которых выполнено нера- венство x > f(x).
A11.
Количество таких значений функции, которые меньше числа М.
6

A12.
Среднее арифметическое таких значений функции, которые меньше числа М.
A13.
Сумма таких значений функции, которые не принадлежат отрезку от
М до N.
A14.
Количество таких значений функции y=f(x), для которых выполнено неравенство x < f(x).
A15.
Количество таких значений функции y=f(x), для которых выполнено равенство |x| = |f(x)|.
A16.
Сумма таких значений функции y=f(x), для которых выполнено нера- венство x
2
> f(x).
A17.
Сумма таких значений функции, которые по модулю больше числа М.
Пример программы уровня A. Найти среднее арифметическое та- ких значений функции y=sin(x)+x
2
, для которых выполнено неравенство
f(x) > x
2
#include
#include
#define A -3.0
#define B 3.0
#define H 0.2
/* функция F() вычисляет значение функции y = sin(x)+x
2
в точке x */ double F(double x)
{ return sin(x) + x*x;
} int main( )
{ double x, y, sum; int count; sum = count = 0; for(x = A; x <= B; x += H)
7


{ y = F(x); printf("%10.4f %10.4f\n", x, y); if (y > x*x)
{ count++; sum += y;
}
} if (count == 0) puts("count = 0"); else printf("sred = %10.4f\n", sum/count); return 0;
}
Уровень B
Варианты заданий
B1.
Количество отрицательных значений функции, имеющих нечетную целую часть.
B2.
Среднее арифметическое таких значений функции, которые имеют в младшем разряде целой части цифру, большую 3.
B3.
Среднее арифметическое таких значений функции, которые имеют дробную часть, меньшую 0,5.
B4.
Количество значений функции, имеющих в младшем разряде целой ча- сти цифру, большую 3.
B5.
Среднее арифметическое таких значений функции, которые имеют четную целую часть.
B6.
Количество неотрицательных значений функции, имеющих четную целую часть.
B7.
Сумма таких значений функции, которые имеют дробную часть, боль- шую 0,5.
B8.
Сумма таких значений функции, которые имеют целую часть, кратную Z.
8

B9.
Среднее арифметическое таких значений функции, которые имеют не- четную целую часть.
B10.
Количество положительных значений функции, которые имеют чет- ную целую часть и дробную часть, меньшую 0,5.
B11.
Сумма неотрицательных значений функции, которые имеют нечет- ную целую часть и дробную часть, большую 0,2.
B12.
Среднее арифметическое таких значений функции, которые имеют нечетную целую часть и дробную часть, большую 0,5.
B13.
Сумма таких значений функции, целая часть которых двузначна.
B14.
Количество таких значений функции, целая часть которых по модулю меньше числа M.
B15.
Сумма таких значений функции, дробная часть которых больше 0,3 и меньше 0,7.
B16.
Среднее арифметическое таких значений функции, целая часть кото- рых по модулю больше числа M.
B17.
Среднее арифметическое таких значений функции, дробная часть ко- торых больше 0,2 и меньше 0,8.
Уровень C
Для решения следующих заданий разрешается использовать цикл только один раз.
Варианты заданий
C1.
Минимальное среди неотрицательных значений функции и количество таких минимальных значений.
C2.
Максимальное среди значений функции, имеющих целую часть, крат- ную Z, и количество таких максимальных значений.
C3.
Минимальное среди значений функции, имеющих дробную часть, меньшую 0,5, и количество таких минимальных значений.
C4.
Минимальное среди значений функции, имеющих четную целую часть, и количество таких минимальных значений.
9


C5.
Максимальное среди значений функции, имеющих нечетную целую часть, и количество таких максимальных значений.
C6.
Максимальное среди значений функции, имеющих в младшем разряде целой части цифру, меньшую 4, и количество таких максимальных значе- ний.
C7.
Максимальное среди значений функции, имеющих дробную часть больше 0,4, и количество таких максимальных значений.
C8.
Минимальное среди значений функции, которые имеют в младшем разряде целой части цифру, большую 3, и количество таких минимальных значений.
C9.
Минимальное среди значений функции, целая часть которых меньше числа M, и количество таких минимальных значений.
C10.
Максимальное среди значений функции, имеющих в младшем разря- де целой части цифру, большую 2, и количество таких максимальных зна- чений.
Некоторые стандартные математические функции
Стандартные математические функции находятся в файле math.h.
abs – абсолютное значение целого числа – |x| int abs(int x);
labs – абсолютное значение «длинного» целого числа – |x|: long labs(long x);
fabs – абсолютное значение числа с плавающей точкой – |x|: double fabs(double x);
sqrt – извлечение квадратного корня: double sqrt(double x);
pow – возведение в степень: double pow(double x, double y);
cos – косинус – cos x (здесь и далее x задается в радианах): double cos(double x);
sin – синус – sin x: double sin(double x);
10

tan – тангенс – tg x: double tan(double x);
acos – арккосинус – arccos x: double acos(double x);
asin – арксинус – arcsin x: double asin(double x);
atan – арктангенс – arctg x: double atan(double x);
atan2 – арктангенс – arctg x/y: double atan2(double x, double y);
exp – экспонента: double exp(double x);
log – натуральный логарифм – ln x: double log(double x);
log10 – десятичный логарифм – log
10
x: double log10(double x).
11

Лабораторная работа № 2. Проверка попадания точки
в область на плоскости
Для функции из лабораторной работы
№ 1
составить программу по- строения таблицы значений функции, состоящую из n строк при измене- нии аргумента от A до B.
В каждой строке таблицы выводить значение аргумента x и соответ- ствующее ему значение функции y в форматированном виде с 4 знаками после запятой. В конце таблицы вывести отдельной строкой среднее арифметическое всех значений функции.
Кроме того, программа должна определить, сколько точек с коорди- натами (x, y) из полученной таблицы попадает внутрь области, ограничен- ной фигурой, соответствующей индивидуальному заданию.
Уровень A
В качестве области выступает прямоугольник со следующими вер- шинами.
Варианты заданий
A1. (-9, -10), (-9, 2), (2, 2), (2, -10).
A2. (-6, -7), (-6, 3), (7, 3), (7, -7).
A3. (-8, -6), (-8, 4), (6, 4), (6, -6).
A4. (-10, -9), (-10, 3), (2, 3), (2, -9).
A5. (-7, -8), (-7, 6), (4, 6), (4, -8).
A6. (-10, -6), (-10, 7), (0, 7), (0, -6).
A7. (-6, -10), (-6, 4), (5, 4), (5, -10).
A8. (-9, -10), (-9, 3), (5, 3), (5, -10).
A9. (-7, -6), (-7, 5), (3, 5), (3, -6).
A10. (-9, -7), (-9, 3), (5, 3), (5, -7).
A11. (-10, -7), (-10, 6), (2, 6), (2, -7).
A12. (-10, -6), (-10, 4), (0, 4), (0, -6).
A13. (-10, -7), (-10, 6), (2, 6), (2, -7).
12


A14. (-9, -9), (-9, 2), (2, 2), (2, -9).
A15. (-9, -6), (-9, 8), (3, 8), (3, -6).
A16. (-9, -6), (-9, 5), (2, 5), (2, -6).
A17. (-6, -10), (-6, 3), (4, 3), (4, -10).
Пример программы уровня A. Найти количество точек (x, y), где
y=sin(x)+x
2
, которые попадают внутрь области, ограниченной прямоуголь- ником с вершинами (-1, -2), (-1, 3), (5, 3), (5, -2).
#include
#include
#define A -3.0
#define B 3.0 double F(double x)
{ return sin(x) + x*x;
} int main( )
{ double x, y, h; int count, n; count = 0; printf("n = "); scanf("%d", &n); /* количество строк в таблице */ h = (B - A) / (n - 1); for(x = A; x <= B; x += h)
{ y = F(x); printf("%10.4f %10.4f\n", x, y); if (x >= -1 && x <= 5 && y >= -2 && y <= 3) count++;
} printf("count = %d\n", count); return 0;
}
13

Уровень B
Варианты заданий
14

Уровень C
Сгенерировать четыре случайные точки плоскости (x
1
, y
1
), (x
2
, y
2
),
(x
3
, y
3
), (x
4
, y
4
) с тем условием, что точка (x
1
, y
1
) принадлежит первой чет- верти координатной плоскости, (x
2
, y
2
) – второй четверти, (x
3
, y
3
) – третей четверти, (x
4
, y
4
) – четвертой четверти. После этого найти количество точек
(x, y) из таблицы, принадлежащих полученной области. Сделать это двумя способами – через уравнения прямых и через площади треугольников.
15

Лабораторная работа № 3. Числовые и функциональные ряды
Уровень A
Для бесконечного числового ряда члены которого вычисляются по формуле, соответствующей индивидуаль- ному варианту, вычислить сумму первых n членов ряда с использованием функции double Sum(int n).
Варианты заданий
16

Пример программы уровня A. Вычислить сумму первых n членов числового ряда, члены которого вычисляются по формуле
#include double Sum(int n)
{ double sum = 0; int i; for(i = 1; i <= n; i++) sum += 5.0 / (i*i + 10*i - 1); return sum;
} int main( )
{ int n; printf("n = "); scanf("%d", &n); printf("sum = %.10f\n", Sum(n)); return 0;
}
Уровень В
Для бесконечного числового ряда члены которого вычисляются по формуле, соответствующей индивидуаль- ному варианту, вычислить приближенную сумму двумя способами: сумму первых n членов ряда и сумму с точностью до eps (эпсилон) в двух разных функциях: double Sum1(int n); double Sum2(double eps).
Запрещается использование функции pow() и условных операторов «if» и
«? : ».
17


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

Уровень С
Для функционального ряда коэффициенты которого вычисляются по формуле, соответствующей ин- дивидуальному варианту, вычислить приближенную сумму при фиксиро- ванном значении x двумя способами: сумму первых n членов ряда и сумму с точностью до eps (эпсилон) в двух разных функциях: double Sum1(double x, int n); double Sum2(double x, double eps).
Запрещается использование условных операторов if и «? :», функции pow(), вторичное вычисление факториала и возведение в степень на каж- дом шаге итерации (использовать рекуррентные соотношения n!=n·(n-1)!,
a
n
=a·a
n-1
).
Варианты заданий
19

Лабораторная работа № 4. Вычисление характеристик
числовых последовательностей
Последовательность данных не всегда нужно сохранять в памяти.
Поэтому нужно уметь обрабатывать последовательность по мере поступ- ления ее элементов: при чтении файла, при вводе некоторых данных с кла- виатуры и т.д.
Пусть имеется последовательность произвольных целых ненулевых чисел, завершающаяся числом 0 (число 0 в последовательность не вхо-
дит). Количество элементов в последовательности заранее неизвестно, по- этомув данной работе использовать массивы (статические и динамиче-
ские) нельзя.
Уровень A
Варианты заданий
A1.
Напечатать в обратном порядке наибольший элемент последователь- ности.
A2.
Найти количество наибольших и наименьших элементов последова- тельности.
A3.
Найти количество простых чисел в последовательности, больших за- данного числа М.
A4.
Найти сумму таких элементов последовательности, которые больше всех предшествующих им элементов.
A5.
Найти количество четных чисел последовательности, сумма цифр в ко- торых не превышает заданного числа P.
A6.
Найти количество таких элементов последовательности, которые пре- восходят сумму всех предшествующих элементов.
A7.
Напечатать в обратном порядке наименьший элемент последователь- ности.
A8.
Найти сумму таких элементов последовательности, которые имеют в младшем разряде цифру 7.
A9.
Найти сумму таких элементов последовательности, которые меньше всех предшествующих им элементов.
20

A10.
Найти количество таких элементов последовательности, которые не превосходят сумму всех предшествующих элементов.
A11.
Найти сумму нечетных чисел последовательности, сумма цифр в ко- торых превышает заданное число P.
A12.
Найти количество таких элементов последовательности, которые имеют в младшем разряде цифру 3.
A13.
Найти количество двузначных элементов последовательности.
A14.
Найти количество таких элементов последовательности, сумма цифр в которых является четным числом.
A15.
Найти количество составных чисел в последовательности.
A16.
Найти сумму нечетных чисел последовательности, количество цифр в которых не превышает заданного числа P.
A17.
Найти количество таких элементов последовательности, которые имеют в своем составе цифру 5.
Пример программы уровня A. Найти количество таких элементов последовательности целых чисел, первая цифра которых равна 5.
#include
#include
/* проверка, является ли цифра d первой цифрой числа a */ int Check(int a, int d)
{ int b = abs(a); while (b > 9) b /= 10; return b == d;
} int main( )
{ int a, count = 0; printf("a = "); scanf("%d", &a); while (a)
21