Лабораторная работа №1. Простейшие задания

Общая информация

Для выполнения заданий вам предстоит создать проект Lesson1 (процесс создания описан в отдельном руководстве). По завершении работы необходимо загрузить через форму на данной странице все созданный вами cpp-файлы проекта Lesson1 без каталогов. Перед тем, как приступить к выполнению задания, скачайте заготовку и перенесите код из неё в свой проект.

Оценка за лабораторную может оставлять от нуля до трёх «сырых» баллов (1 балл за первую треть задач, 2 балла за две трети и т. д., дополнительные задачи не оцениваются). Задачи следует выполнять последовательно.

Задачи выполняются в виде функций. При этом функции не должны содержать команд ввода-вывода (за исключением первой и восьмой задач). Обращение к функциям, написанным для выполнения задач, а также команды ввода-вывода размещаем в функции main(). В функции main() для выбора нужной задачи удобно пользоваться оператором выбора.

Необходимо писать вразумительные сообщения для пользователя на консоль («Введите два целых числа: », «Результат сравнения: » и т. п.).

Каждая функция должна начинаться с комментария с текстом задания.

Задачи

  1. [Функция void Hello()] Написать функцию, которая выводит на экран фразу “Hello, world”.

  2. [Функция bool isOdd(int n)] Проверить, является ли данное целое число чётным или нечётным, вывести 0 или 1, соответственно. (операция %) Указание: не использовать условные операторы, и константы 0, 1; вывести только значение выражения.

  3. [Функция double mean(int a, int b)] Вычислить среднее арифметическое двух заданных целых чисел. Указание: для того, чтобы деление выполнялось вещественным образом, нужно, чтобы один из операндов был вещественный, самый простой способ добиться этого в данном случае — использовать литерал 2.0 в качестве делителя.

  4. [Функция bool ordered(int a, int b, int c)] Даны три целых числа: ABC. Вывести значение 1, если справедливо двойное неравенство A < B < C, и 0 в противном случае. Указание: условный оператор не использовать.

  5. [Функция double CircleLength(double r)] Вычислить длину окружности заданного радиуса. Для этого перед началом функции main объявить глобальную константу со значением числа π (const double Pi {3.1415926}).

  6. [Функция double dist(double x1, double y1, double x2, double y2)] Создать функцию dist, вычисляющую расстояние между двумя точками на вещественной плоскости, заданными своими координатами. Проверить правильность вашей функции можно в сервисе wolframalpha. Например, чтобы найти расстояние между точками (1, -2) и (4, 2), используйте запрос distance({1, -2}, {4, 2}).

  7. [Функция double areaFromPos(double x1, double y1, double x2, double y2, double x3, double y3)] Создать функцию areaFromPos, вычисляющую площадь треугольника по координатам его вершин.

    Указание 1. Использовать формулу Герона
    Указание 2. Воспользоваться функциейdist;

  8. [Функция void SinLoop()] Заданы вещественные числа ABH (A < B, H > 0). Вывести значения функции синуса на промежутке от A до B с шагом H.

    Указание: использовать счётчик цикла типа double.

Дополнительные задания

  1. [Функция double myCos(double x)] Дано вещественное число X и вещественное число eps (> 0). Найти значение выражения
    \[1 - \frac {X^2} {2!} + \frac{ X^4} {4!} - … + (-1)^N · \frac {X^{2N}} {(2N)!} + … \]
    с точностью eps. Полученное число является приближенным значением функции cos в точке X.
    Вызовите созданную функцию из функции main, сравните с результатом стандартной функции cos, убедитесь с помощью assert, что они различаются не более, чем на eps_r (eps_r — это другая положительная константа, она может отличаться от eps, которую вы использовали при вызове функции)
  2. [Функция double myPow(double a, int n)]Дано вещественное число A (A ≠ 0) и целое число N. Найти A в степени N.

    Указание: если N < 0, то \[A^N = \frac{1}{A^{-N}}.\]

  3. [Функция bool isPrime(int x)] Дано число X. Проверить, является ли оно простым, используя последовательное деление.
    Указания.
  • Верхняя граница делителя (квадратный корень из X) должна быть вычислена до цикла.
  • До начала цикла также стоит проверить делимость числа на 2 (если проверка успешна, сразу return). После этого в цикле достаточно перебирать нечётные числа.
  • Если в цикле найден делитель, следует сразу делать return