Skip to content
/ cpp_mechanics Public template

Репозиторий для курса "Технологии программирования и работа на ЭВМ". C++.

Notifications You must be signed in to change notification settings

mykfu/cpp_mechanics

Repository files navigation

Домашние работы

Disclaimer: Во всех задачах подразумевается (если не сказано обратного), что функции тестируются и запускаются в main().

0. Git

Создать проект в Visual Studio и загрузить на github.

Полезные ссылки

  1. Программа git https://git-scm.com/
  2. Учебник по работе с git: Pro Git book, written by Scott Chacon and Ben Straub. https://git-scm.com/book/ru/v2
  3. Продвинутый текстовый редактор Notepad++ https://notepad-plus-plus.org/downloads/
  4. Гайд по работе с сайтом GitHub (на английском, гугл транслейт в помощь) https://guides.github.com/activities/hello-world/
  5. Основные моменты работы с git: git-tutorial.md

1. Задачи на функции

  1. Написать функцию, переставляющую значения своих трех вещественных параметров по циклу.
  2. Написать функцию, которая принимает 5 параметров (первые три — по значению, остальные два — по ссылке). Первые три параметра — длины двух диагоналей параллелограмма и угол между ними, остальные — длины сторон параллелограмма, которые функция должна вычислять.
  3. Написать функцию с тремя вещественными параметрами, заменяющую значение каждого параметра на среднее арифметическое значений двух других параметров.

До 27.02


2. Задачи на массивы

  1. Доделать. Написать функцию, принимающую в качестве параметра массив целых чисел типа ar из любого числа элементов и его длину и умножающую элементы этого массива с четными индексами на 2, а с нечетными — на 3.
  2. Написать функцию, принимающую в качестве параметров три массива, первые два по 50 элементов каждый, третий из 100 элементов, и записывающую элементы из первых двух массивов в третий в порядке возрастания (предполагается, что в первых двух массивах элементы также записаны в порядке возрастания).
  3. Написать функцию, принимающую массив целых чисел и его длину, а также число n, и осуществляющую циклический сдвиг его элементов вправо на n позиций, без использования дополнительных массивов.
  4. Ввести 15 целых чисел и вывести максимальную длину подпоследовательности, являющейся арифметической прогрессией. Члены подпоследовательности должны идти в исходной последовательности подряд (между ними не допускается других членов исходной последовательности).
  5. Написать функцию, которая принимает в качестве параметра двумерный массив 20 × 20 (квадратную матрицу) и возвращает ее след (сумму диагональных элементов).
  6. Написать функцию, принимающую в качестве параметра двумерный массив и заменяющую в нем каждый элемент на сумму его соседей сверху, снизу, справа и слева (отсутствующие соседи считаются равными нулю; все элементы должны меняться одновременно, т. е. во всех суммах участвуют старые значения элементов).
  7. Написать функцию, принимающую в качестве параметра квадратную матрицу 7×7 и печатающую ее элементы по спирали, начиная с центрального элемента (первое звено спирали идет вверх).

До 05.03


3. Задания на динамические массивы

  1. Написать функцию, принимающую в качестве параметров динамический двумерный массив и заполняющий её случайными числами от -100 до 100. Случайное, целое число от 0 до RAND_MAX (32767), можно получить функцией rand(), а привести к нужному отрезку можно используя арифметические операции.
  2. Написать функцию, принимающую в качестве параметров двумерный массив и два целых числа (номера строк), и меняющую местами две строки с указанными номерами в массиве-параметре.
  3. Написать функцию, принимающую в качестве параметров двумерный массив, два целых числа (номера строк) и вещественное число (коэффициент), и вычитающую в массиве-параметре строку с первым номером, умноженную на коэффициент, из строки со вторым номером.
  4. Написать процедуру, приводящую матрицу из вещественных чисел к ступенчатому виду при помощи элементарных преобразований над строками (см. задачи 2 и 3). Ступенчатый вид матрицы — такой, при котором каждая следующая строка начинается с большего числа нулей, чем предыдущая, кроме, возможно, нескольких последних строк матрицы, полностью состоящих из нулей.
  5. Пользуясь решением задачи 4, написать функцию, вычисляющую определитель квадратной матрицы.

В задачах 1-5 использовать динамический массив типа double

До 12.03


4. Задачи на параметры переменной длины, указатели на функции и шаблоны функций

  1. Написать функцию с парамтером переменной длины, вычисляющий сумму всех элементов типа int, последний элемент задается как null. Например, funcName(2, 3.0, "text", 'c', 3, null); должен выдать результат \5.
  2. Написать функцию с обобщенным типом (шаблоном) и содержающий два параметра, вычисляющую корень первого числа в степени второго числа. Добавить проверку, что действительно типы в параметре являются числом.
  3. Написать функцию f(x) = sin^2 x и функцию, вычисляющую приближенное значение определенного интеграла по формуле средних трапеций, а также функцию main, выводящую на экран приближенное значение интеграла. Формула средних трапеций:

Формула средних трапеций.

Функцию integral перегрузить с указателем на функцию f и обобщенным типом F.

  1. Написать функцию, принимающую в качестве параметра указатель на функцию типа double(double) и строящую ее график (в текстовом режиме при помощи звездочек; ось x направлена вниз, ось y — вправо, начало координат — в середине экрана). При помощи этой функции построить график: а) 30cos(x/4); б) 30sin(x/4); в) 10*tg(x/10).
  2. Написать функцию, принимающую в качестве параметра указатель на функцию типа double(double) и два числа a и b, и возвращающую корень этой функции на отрезке [a,b] (корень, с точностью до 10−10, находится методом половинного деления; если на концах этого отрезка значения функции имеют одинаковые знаки, выдается сообщение об ошибке). При помощи этой функции найти корень уравнения e^x = 5 sin x на отрезке [0,1].

До 19.03


4. Задачи на макроопределения и рекурсию

  1. Реализовать программы, которые были на занятии, в частности, определение через define значения функции f(x) = x^3 + x^2 - 5x + 3. Вычисление факториала и чисел Фибоначчи используя рекурсию.

1. Comming soon... (пронесло)

До 30.03


5. Задачи на рекурсии

  1. Решить задачу diceSum, выводящяя на экран все комбинации заданного числа кубиков и определенной суммой.
  2. Решить задачу "8 королев".

см. занятие 7.

6. Игра цепочки слов

Как сделать из мухи слона. Реализовать игру цепочки слов, задача игроков — превратить одно слово в другое с наименьшим количеством промежуточных звеньев. Например, МУХА — МУРА — ТУРА — ТАРА — КАРА — КАРЕ — КАФЕ — КАФР — КАЮР — КАЮК — КРЮК — УРЮК — УРОК — СРОК — СТОК — СТОН — СЛОН.

стук -> слон
стук -> [стул, сток, стык]
стул -> [стол]
сток -> [стон]
стон -> [слон]

К заданию прилагается словарь слов, состоящих из 4 букв.

7. Сортировки

Реализовать сортировку вектора строк (vector<string>), методом:

  1. Пузырька.
  2. Вставками.

Для сравнения использовать std::string::compare().

About

Репозиторий для курса "Технологии программирования и работа на ЭВМ". C++.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published