Самостоятельная работа № 1 «Управляющие операторы»
Задание 1.Вычисление функций с использованием их разложения в степенной ряд.
Вычислить функцию S= f(x), используя ее разложение в степенной ряд для заданной точности e (0
№ варианта | Сумма |
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. | |
26. | |
27. | |
28. | |
29. | |
30. |
Задание 2.
Затабулировать функцию Z=f(x,y) с шагами Dx и Dy внутри прямоугольника и области существования данной функции.
Составить универсальную программу для произвольных значений параметров a, b, c, d, Dx и Dy.
Значения функции Z округлить до двух знаков после десятичной точки.
Результаты вывести на экран в виде двумерной таблицы, вместо несуществующих значений вывести астериск (*).
Рекомендуется решать задачу с использованием вложенных циклов с параметром. Для горизонтальной табуляции рекомендуется использовать манипулятор setw(n) (подключить заголовочный файл iomanip.h директивой #include ). «Лишние» знаки после запятой можно отбросить, используя функциюfloor,а можно использовать манипуляторsetprecision
Вид функции y = f(x) и рабочий набор исходных данных приведены в таблице
№ п\п | Вид функции Z = f(x,y) | Рабочий набор исходных данных | |||||
a | b | c | d | Dx | Dy | ||
| -1 | -1 | 0.2 | 0.2 | |||
| -1 | -1 | 0.2 | 0.2 | |||
| 0.3 | 0.3 | |||||
| 0.2 | 0.2 | |||||
| -1 | 0.2 | 0.1 | ||||
| 0.1 | 0.2 | |||||
| -1 | -1 | 0.2 | 0.2 | |||
| 0.2 | 0.2 | |||||
| -2 | -2 | 0.4 | 0.4 | |||
| -1 | -1 | 0.2 | 0.2 | |||
| -3 | -3 | 0.3 | 0.3 | |||
| -1 | -1 | 0.2 | 0.2 | |||
| 0.2 | 0.2 | |||||
| -1 | -1 | 0.2 | 0.2 | |||
| -1 | -1 | 0.2 | 0.2 |
Примерный вид результата:
Приложение Б
Алгоритм называется циклическим, если он содержит многократное выполнение одних и тех же ветвей при различных значениях промежуточных данных. Число повторений этих ветвей алгоритма может быть задано в явной или неявной форме.
Циклы программируются с помощью операторов for, while и do/while.
Структура повторения while
Структура повторения while позволяет определить действие, которое должно повторяться, пока некоторое условие остается истинным. Предложение псевдокода
ПОКА число четное
число заменить на целую часть половины числа
описывает повторные действия замены числа на новое значение (под числом понимается значение переменной целого типа). Условие «число четное» может быть истинным или ложным. Если оно истинно, то осуществляется действие «число заменить на целую часть половины числа». Это действие будет повторяться до тех пор, пока условие остается истинным.
Оператор, записанный в теле структуры повторения while (ПОКА) составляет тело while и может быть отдельным или составным.
Как только условие станет ложным, повторение прерывается и выполняется первое предложение псевдокода, следующее за структурой повторения. Блок-схема на рис. Б.1 иллюстрирует управляющую логику структуры повторения while.
Рис.Б.1-Блок-схема структуры повторения while
Выполнение подобной структуры повторения никогда не прервется, если в теле структуры while не предусмотрено действие, приводящее условие к ложному значению.
Оператор с предусловием (while) записывается так:
while (условие) оператор;
Слово while является зарезервированным словом С++. Если условие сразу ложно, оператор ни разу не выполнится. Для составления логических выражений можно использовать операции отношения (, =,
Таблица Б.1
Логические операторы
Оператор | Название оператора | Пример выражения | Пояснение |
логическое умножение (И) | (i j) (k != 1) | Выражение истинно если i больше j И k не равно 1 | |
|| | логическое сложение (ИЛИ) | (ch == ‘y’) || (ch == ‘Y’) | Выражение истинно если значение переменной ch равно ‘y’ ИЛИ ‘Y’ |
! | логическое отрицание (НЕ) | !(i 1) | Выражение истинно если i не больше 1 |
На рис Б.2 приведен программный код описанной выше структуры. В примере используется переменная целого типа value, которой в результате выполнения очередной итерации цикла присваивается новое значение. Комбинированная операция /= уменьшает значение переменной value в два раза. Условие (value % 2 == 0) будет истинным если остаток от деления равен нулю, т.е. число четное. Результат деления хотя бы один раз станет нечетным, поэтому зацикливания не произойдет. При вводе нечетного числа цикл не выполняется ни разу.
intmain() { char s[100]; int value; cout value; while (value % 2 == 0) value /= 2; // value = value / 2; cout |
Рис.Б.2-Пример оператора цикла с предусловием