Skip to content

Stanislaw-Rudnicki/Cpp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Cpp

C++

Написать функцию, которая определяет, является ли «счастливым» шестизначное число.

Написать функцию, выводящую на экран переданную ей игральную карту.

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

Число называется совершенным, если сумма всех его делителей равна ему самому. Напишите функцию поиска таких чисел во введенном интервале.

Написать функцию, которая получает в качестве параметров 2 целых числа и возвращает сумму чисел из диапазона между ними.


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


Написать функцию, определяющую среднее арифметическое элементов передаваемого ей массива.


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


Написать функцию, реализующую алгоритм линейного поиска заданного ключа в одномерном массиве.


Написать функцию, реализующую алгоритм бинарного поиска заданного ключа в одномерном массиве.


Написать функцию для перевода числа, записанного в двоичном виде, в десятичное представление.


  1. За допомогою рекурсивної функції здійснити виведення на екран елементів одновимірного масиву
  2. За допомогою рекурсивної функції здійснити пошук максимального елемента одновимірного масиву
  3. За допомогою рекурсивної функції здійснити пошук мінімального елемента одновимірного масиву
  4. За допомогою рекурсивної функції обчислити суму елементів одновимірного масиву
  5. За допомогою рекурсивної функції обчислити середнє арифметичне елементів одновимірного масиву
  6. Підрахувати sqrt(5 + sqrt(6 + sqrt(7 + ... + sqrt(n + 4))))

  1. Напишіть шаблон функції, яка обчислює корінь лінійного рівняння
  2. Напишіть шаблон функції, яка обчислює корінь квадратного рівняння
  3. Напишіть шаблон функції, яка здійснює пошук максимального елемента в масиві. Функція повертає позицію елемента і виводить значення
  4. Напишіть шаблон функції, яка приймає масив, і виводить на екран позиції нульових елементів масиву
  5. Напишіть шаблон функції, яка приймає x і обчислює x^y. Y - ціле число

Даны два массива : А[M] и B[N] (M и N вводятся с клавиатуры).
Необходимо создать третий массив минимально возможного размера,
в котором нужно собрать элементы массива A, которые не включаются в массив B, без повторений.
в котором нужно собрать элементы массивов A и B, которые не являются общими для них, без повторений.


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


Написать программу, которая содержит функцию Action, принимающую в качестве аргумента, указатели на два массива(А и В) и размеры массивов, а также указатель на функцию.
Пользователю отображается меню, в котором он может выбрать max, min, avg.
Если выбран max - передается указатель на функцию, которая ищет максимум,
если выбран min - передается указатель на функцию, которая ищет минимум,
если выбран avg - передается указатель на функцию, которая ищет среднее.
Возвращаемое значение функции Action результат выбора пользователя max, min, avg.


  1. Написать функцию, добавляющую столбец двухмерному массиву в указанную позицию.
  2. Написать функцию, удаляющую столбец двухмерного массива по указанному номеру.
  3. Дана матрица порядка MxN (M строк, N столбцов).
    Необходимо заполнить ее значениями и написать функцию, осуществляющую циклический сдвиг строк и/или столбцов массива указанное количество раз и в указанную сторону.

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

  1. int mystrlen(const char* str); -функція визначає довжину рядка.
  2. char* mystrcpy(char* str1, const char* str2); -функція копіює рядок str2 в буфер, що адресується через str1. Функція повертає покажчик на перший рядок str1.
  3. char* mystrcat(char* str1, const char* str2); -функція приєднує рядок str2 до рядка str1. Функція повертає покажчик на перший рядок str1.
  4. char* mystrchr(char* str, char s); -функція здійснює пошук символу s в рядку str. Функція повертає покажчик на перше входження символу в рядок, в іншому випадку 0.
  5. char* mystrstr(char* str1, char* str2); -функція здійснює пошук підрядка str2 в рядку str1. Функція повертає покажчик на перше входження підрядка str2 в рядок
  6. int mystrcmp(const char* str1, const char* str2); -функція порівнює два рядки, і, якщо рядки рівні повертає 0, якщо перший рядок більше другий, то повертає 1, інакше - 1.
  7. int StringToNumber(char* str); -функція конвертує рядок в число і повертає це число.
  8. char* NumberToString(int number); -функція конвертує число в рядок і повертає покажчик на цей рядок.
  9. char* Uppercase(char* str1); -функція перетворює рядок у верхній регістр.
  10. char* Lowercase(char* str1); -функція перетворює рядок у нижній регістр.
  11. char* mystrrev(char* str); -функція реверсує рядок і повертає покажчик на новий рядок.

  1. Создайте структуру, описывающую комплексное число. Реализуйте арифметические операции с комплексными числами: сумму, разность, умножение, деление.

  1. Реализовать структуру «Автомобиль» (длина, клиренс (высота посадки), объем двигателя, мощность двигателя, диаметр колес, цвет, тип коробки передач).
    Создайте функции для задания значений, отображения значений, поиска значений.

Разработайте программу «Библиотека». Создайте структуру «Книга» (название, автор, издательство, жанр).
Создайте массив из 10 книг. Реализуйте для него следующие возможности:
Редактировать книгу
Печать всех книг
Поиск книг по автору
Поиск книги по названию
Сортировка массива по названию книг
Сортировка массива по автору
Сортировка массива по издательству


Напишіть інформаційну систему "Співробітники" (ПІБ, Дата народження, Стать, Посада) з наступними вимогами:

  • динамічна зміна розмірів масиву для зберігання інформації;
  • інформація про дати зберігається в бітових полях;
  • організуйте введення даних;
  • організуйте виведення даних у таблиці через псевдо графіку;
  • додавання, зміна та видалення інформації про співробітників;
  • пошук співробітника на прізвище;
  • вивід інформації про всіх співробітників, зазначеного віку;
  • вивід інформації про всіх співробітників, прізвище яких починається на зазначену букву;
  • вивід іменинників вибраного місяця;
  • виведення всіх співробітників по вибраній статті (чоловіча, жіноча);
  • виведення всіх співробітників - пенсіонерів чоловічого (понад 60 років) і жіночого (понад 55 років) статі.

а) В функции main вызвать все функции через переозначеные (обобщенные) имена из файла function.h (show())
б) определить константу, которая указывает какой тип данных будет использоваться.
Например INTEGER - целые данные, CHAR - символьные DOUBLE - настоящие. (#define INTEGER)

  1. В файле function.cpp необходимо написать следующие функции для работы с массивом данных:
    а) функцию для заполнения массива случайными значениями;
    б) функцию для вывода значений массива на консоль;
    в) функцию для поиска минимального элемента;
    г) функцию для поиска максимального элемента;
    д) функцию для сортировки;
    е) функцию для редактирования значения массива.
    Данные функции необходимо написать для работы с массивом целых, действительных и символьных значений. (Для каждого типа написать отдельную функцию).

  2. В файле function.h нужно:
    а) описать прототипы всех функций;
    б) сделать проверку определена ли константа, указывающая на тип данных (#ifdef INTEGER)
    в) создать обобщающие имена функции, которым будет определена функция соответствующего типа в зависимости от константы, указанной в файле prog.cpp. (#define show ShowInt)


Нахождение меньшего из двух чисел;
Нахождение большего из двух чисел;
Возведение числа в квадрат;
Возведение числа в степень;
Проверка числа на четность;
Проверка числа на нечетность;


  1. Дан текстовый файл. Удалить из него последнюю строку. Результат записать в другой файл.
  2. Дан текстовый файл. Найти длину самой длинной строки.
  3. Дан текстовый файл. Посчитать сколько раз в нем встречается заданное пользователем слово.
  4. Дан текстовый файл. Найти и заменить в нем заданное слово. Что искать и на что заменять определяется пользователем.

Напишите информационную систему "Сотрудники". Программа должна обеспечивать ввод данных, редактирование данных сотрудника, удаление сотрудника, поиск сотрудника по фамилии, вывод информации обо всех сотрудниках, указанного возраста, или фамилия которых начинается на указанную букву.

Организуйте возможность сохранения найденной информации в файл.
Также весь список сотрудников сохраняется в файл (при выходе из программы – автоматически, в процессе исполнения программы – по команде пользователя).
При старте программы происходит загрузка списка сотрудников из указанного пользователем файла.


Напишіть програму, яка знаходить найбільше число паліндром, яке утворюється шляхом множення двох простих п'ятизначних чисел.
Програма має вивести на екран саме число паліндром та два співмножники.
Просте число — це натуральне число, яке має рівно два різних натуральних дільники (лише 1 і саме число).
Послідовність простих чисел починається так : 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, …
Паліндром - рядок, що однаково читається в обох напрямках (зліва направо та справа наліво). Наприклад 11, 12321, А мене нема...


Реализуйте класс “Студент”. Необходимо хранить в переменных - членах класса: ФИО, дату рождения, контактный телефон, город, страну, название учебного заведения, город и страну (где находится учебное заведение), номер группы.
Реализуйте функции - члены класса для ввода данных, вывода данных, реализуйте аксессоры для доступа к отдельным переменным - членам.


Реализуйте класс “Точка”. Необходимо хранить координаты x, y, z в переменных - членах класса.
Реализуйте функции - члены класса для ввода данных, вывода данных, реализуйте аксессоры для доступа к переменным - членам, реализуйте сохранение в файл и загрузку данных из файла.


Разработать класс String, который в дальнейшем будет использоваться для работы со строками.
Класс должен содержать:

  • Конструктор по умолчанию, позволяющий создать строку длиной 80 символов;
  • Конструктор, позволяющий создавать строку произвольного размера;
  • Конструктор, который создаёт строку и инициализирует её строкой, полученной от пользователя;
  • Конструктор копирования.
    Класс должен содержать методы для ввода строк с клавиатуры и вывода строк на экран.

Создайте класс Array (или используйте ранее созданный вами).
Класс Array – это класс динамического массива.
Размер массива может быть передан в качестве параметра или задан с помощью вызова функции-члена.

  • Класс должен позволять заполнять массив значениями,
  • отображать содержимое массива,
  • изменять размер массива,
  • сортировать массив,
  • определять минимальное и максимальное значение.
    Класс должен содержать набор конструкторов (конструктор копирования обязателен), деструктор.

Создайте приложение "Телефонная книга".
Необходимо хранить данные об абоненте (ФИО, домашний телефон, рабочий телефон, мобильный телефон, дополнительная информация о контакте) внутри соответствующего класса. Наполните класс переменными - членами, функциями-членами, конструкторами, inline-функциями-членами, используйте инициализаторы, реализуйте деструктор.
Обязательно необходимо выделять динамически память под ФИО.
Предоставьте пользователю возможность добавлять новых абонентов, удалять абонентов, искать абонентов по ФИО, показывать всех абонентов, сохранять информацию в файл и загружать из файла.


Создайте программу, имитирующую многоквартирный дом.
Необходимо иметь классы “Человек”, “Квартира”, “Дом”.
Класс “Квартира” содержит динамический массив объектов класса “Человек”.
Класс “Дом” содержит массив объектов класса “Квартира”.
Каждый из классов содержит переменные - члены и функции-члены, которые необходимы для предметной области класса.
Обращаем ваше внимание, что память под строковые значения выделяется динамически.
Например, для ФИО в классе “Человек”.
Не забывайте обеспечить классы различными конструкторами (конструктор копирования обязателен), деструкторами.
В main протестировать работу полученного набора классов.

Логика следующая:
Квартира не может существовать без дома. Поэтому класс Квартира определяется внутри класса Дом.
Человек может одновременно проживать (или иметь в собственности) более, чем в 1 квартире.
Людей можно заселять в квартиры, можно выселять.
Можно смотреть кто живет в конкретном доме.
Можно смотреть какие квартиры числятся за конкретным человеком.


Создайте класс для подсчета площади геометрических фигур.
Класс должен предоставлять функциональность для подсчета площади треугольника по разным формулам, площади прямоугольника, площади квадрата, площади ромба.
Функции-члены для подсчета площади должны быть реализованы с помощью статических функций-членов.
Также класс должен считать количество подсчетов площади и возвращать это значение с помощью статической функции-члена.


К уже реализованному классу Точка добавьте необходимые конструкторы, сделайте ряд функций inline, используйте инициализаторы.

К уже реализованному классу Student добавьте необходимые конструкторы, деструктор, сделайте ряд функций inline, используйте инициализаторы.
Обязательно выделять память под ФИО студента динамически, выделенную память необходимо освобождать в деструкторе.

К уже реализованным классам Точка, Дробь, Student добавьте механизм делегирования конструкторов и возможность получения количества созданных объектов этих классов.


К уже реализованному классу Точка добавьте необходимые конструкторы, сделайте ряд функций inline, используйте инициализаторы.

К уже реализованному классу Student добавьте необходимые конструкторы, деструктор, сделайте ряд функций inline, используйте инициализаторы.
Обязательно выделять память под ФИО студента динамически, выделенную память необходимо освобождать в деструкторе.

К уже реализованным классам Точка, Дробь, Student добавьте механизм делегирования конструкторов и возможность получения количества созданных объектов этих классов.


Создайте класс Дробь (или используйте уже ранее созданный вами).
Используя перегрузку операторов реализуйте для него арифметические операции для работы с дробями (операции + , -, *, / ).


Создайте класс Complex (комплексное число) или используйте уже созданный вами класс.
Создайте перегруженные операторы для реализации арифметических операций по работе с комплексными числами (операции + , -, *, / ).


Создайте класс Date, который будет содержать информацию о дате (день, месяц, год).
С помощью механизма перегрузки операторов, определите операцию разности двух дат (результат в виде количества дней между датами), а также операцию увеличения даты на определенное количество дней.


Добавить в строковый класс функцию, которая создает строку, содержащую пересечение двух строк, то есть общие символы для двух строк. Например, результатом пересечения строк «sdqcg» «rgfas34» будет строка «sg». Для реализации функции перегрузить оператор * (бинарное умножение).


Создать класс Overcoat (верхняя одежда).
Реализовать перегруженные операторы:

  1. Проверка на равенство типов одежды (операция ==).
  2. Операцию присваивания одного объекта в другой (операция =).
  3. Сравнение по цене двух пальто одного типа (операция >).

Создать класс Flat (квартира).
Реализовать перегруженные операторы:

  1. Проверка на равенство площадей квартир (операция ==).
  2. Операцию присваивания одного объекта в другой (операция =).
  3. Сравнение двух квартир по цене (операция >).

Создайте класс Circle (окружность):
Реализуйте через перегруженные операторы:
Проверка на равенство радиусов двух окружностей (операция ==);
Сравнение длин двух окружностей (операция >);
Пропорциональное изменение размеров окружности, путем изменения ее радиуса (операция += и -=)


Создать класс Airplane (самолет).
С помощью перегрузки операторов реализовать:

  • Проверка на равенство типов самолетов (операция ==)
  • Увеличение и уменьшение пассажиров в салоне самолета (операции ++ и -- в префиксной форме)
  • Сравнение двух самолетов по максимально возможному количеству пассажиров на борту (операция >)

В ранее созданный класс String добавьте перегрузку [], (), преобразования типа к int:
• [] — возвращает элемент по указанному индексу;
• () — ищет символ в строке, если символ есть возвращает индекс, если нет –1.
Преобразование к int возвращает длину строки.


Создайте класс «Комплексное число» - Complex. Класс должен содержать несколько конструкторов.
Класс должен иметь возможность вводить и выводить комплексные числа посредством перегруженных операций >> и <<.
Перегрузите операции + , -, != , == , ().
Используйте обычную и дружественную перегрузку.


Создайте класс с именем Time для хранения времени.
В классе должна быть функция-член, которая даёт приращение времени, хранящееся в объекте Time, равное 1 секунде.
Напишите соответствующие конструкторы и функции-члены.
В классе должны быть перегружены операции ++, --, != , == , > , <, >> , << , =, +=, -=, ().
Используйте обычную и дружественную перегрузку.


В ранее созданный класс Array добавьте перегрузку [], (), преобразования типов к int и char*:

  • [] – возвращает элемент по указанному индексу
  • () – увеличивает все элементы массива на указанную величину
    Преобразование к int возвращает сумму элементов массива
    Преобразование к char* возвращает значения элементов массива в виде строки

Реализовать класс var - «Универсальная переменная».
Объекты экземпляры этого класса способны хранить в себе значения следующих типов:
int, double, String (строка – уже готовый класс).
Например:

void main()
{
    var a = 15;
    var b = “Hello”;
    var c = 7.8;
    var d = “50”;
    b = a + d;
    b.Show(); // Выведет 65
    if (a == b) cout << “Equal\n”;
    else cout << “Not Equal\n”;
}

Для класса var необходимо:

  • перегрузить арифметические операторы: +, -, *, / , +=, -=, *=, /=
  • и операторы сравнения: <, >, <= , >= , == , != (Вся перегрузка осуществляется как функции-члены класса var)
    В переменной типа var в любой момент времени может храниться только одно значение (или int, или double, или String).
    При перегрузке операторов учитывать следующее: если в операции типы значений двух операндов типа var разные, то необходимо приводить (конвертировать) значение из второго операнда к типу значения первого операнда и только после этого выполнять операцию. (При этом значение (и тип) второго операнда в самом объекте var не меняется)

Например:

var a = 10, b = “120”, c;
c = a + b;
c.Show(); //Выведет 130
c = b + a;
c.Show(); //Выведет “12010”

Для типа Строка операция * должна возвращать новую строку, состоящую только из символов первой строки, которые есть во второй строке, например:

var a = “Microsoft”, b = “Windows”, c;
c = a * b;
c.Show(); //Выведет “ioso”

Для типа Строка операция / должна возвращать новую строку, состоящую из символов первой строки, которых нет во второй строке, например:

var a = “Microsoft”, b = “Windows”, c;
c = a / b;
c.Show(); //Выведет “Mcrft”

Аналогично для Строки *= и /=
Добавить в класс var преобразования к типам: int, double, char*.


Создайте шаблонный класс матрица.
Необходимо реализовать динамическое выделение памяти, очистку памяти, заполнение матрицы с клавиатуры, заполнение случайными значениями, отображение матрицы, арифметические операции с помощью перегруженных операторов(+, –, *, /), поиск максимального и минимального элемента.


Создать шаблонный класс-контейнер Array, который представляет собой массив, позволяющий хранить объекты заданного типа.
Класс должен реализовывать следующие функции:

  • GetSize – получение размера массива (количество элементов, под которые выделена память);
  • SetSize(int size, int grow = 1) – установка размера массива (если параметр size больше предыдущего размера массива, то выделяется дополнительный блок памяти, если нет, то «лишние» элементы теряются и память освобождается);
    параметр grow определяет для какого количества элементов необходимо выделить память, если количество элементов превосходит текущий размер массива. Например, SetSize(5, 5); означает, что при добавлении 6-го элемента размер массива становится равным 10, при добавлении 11-го - 15 и т. д.;
  • GetUpperBound - получение последнего допустимого индекса в массиве. Например, если при размере массива 10, вы добавляете в него 4 элемента, то функция вернет 3;
  • IsEmpty - массив пуст?;
  • FreeExtra - удалить «лишнюю» память (выше последнего допустимого индекса);
  • RemoveAll - удалить все;
  • GetAt - получение определенного элемента (по индексу);
  • SetAt – установка нового значения для определенного элемента (индекс элемента должен быть меньше текущего размера массива);
  • operator [] – для реализации двух предыдущих функций;
  • Add – добавление элемента в массив (при необходимости массив увеличивается на значение grow функции SetSize);
  • Append – «сложение» двух массивов;
  • operator =;
  • GetData – получения адреса массива с данными;
  • InsertAt – вставка элемента(-ов) в заданную позицию;
  • RemoveAt – удаление элемента(-ов) с заданной позиции.

Создайте класс с именем Date для хранения даты (или используйте ранее созданный).
В классе должна быть функция-член, которая увеличивает день на 1.
Напишите соответствующие конструкторы и функции-члены.
В классе должны быть перегружены операциии ++, --, != , == , > , <, >> , << , =, +=, -=, ().
Используйте обычную и дружественную перегрузку.


Создайте шаблонный класс двусвязного списка для работы с целыми значениями.
Требуется создать реализации для типичных операций над элементами:
AddToHead – добавление элемента в голову;
AddToTail – добавление элемента в хвост;
DeleteFromHead – удаление элемента из головы;
DeleteFromTail – удаление элемента из хвоста;
DeleteAll – удаление всех элементов;
Show – отображение всех элементов списка на экран.


Создайте шаблонный класс двусвязного списка для работы с целыми значениями.
Требуется создать реализации для типичных операций над элементами:
AddToHead – добавление элемента в голову;
AddToTail – добавление элемента в хвост;
DeleteFromHead – удаление элемента из головы;
DeleteFromTail – удаление элемента из хвоста;
DeleteAll – удаление всех элементов;
Show – отображение всех элементов списка на экран.

Добавить в класс из задания 1 следующие функции:
вставка элемента в заданную позицию,
удаление элемента по заданной позиции,
поиск заданного элемента (функция возвращает позицию найденного элемента в случае успеха или NULL в случае неудачи),
поиск и замена заданного элемента (функция возвращает количество замененных элементов в случае успеха или - 1 в случае неудачи),
переворот списка.


Студент містить наступні поля – прізвище, дата народження.

  1. Створити динамічну структуру лінійний однозв’язний список.
    Список містить такий функціонал:
    добавити студента в кінець, в довільну позицію;
    видалити з кінця, з довільної позиції;
    вивести на екран весь список, або одного;
    пошук студента по прізвищу;
    сортування списку студентів;
    реалізувати збереження та завантаження списку.
    Зробити меню для роботи зі списком.

Создайте шаблонный класс обычной очереди для работы с целыми значениями.
Требуется создать реализации для типичных операций над элементами:

  • IsEmpty – проверка очереди на пустоту
  • IsFull – проверка очереди на заполнение
  • Enqueue – добавление элемента в очередь
  • Dequeue – удаление элемента из очереди
  • Show – отображение всех элементов очереди на экран

Создайте класс очереди с приоритетами для работы с целыми значениями.
Требуется создать реализации для типичных операций над элементами очереди:

  • IsEmpty – проверка очереди на пустоту
  • IsFull – проверка очереди на заполнение
  • InsertWithPriority – добавление элемента c приоритетом в очередь
  • PullHighestPriorityElement – удаление элемента с самым высоким приоритетом из очереди
  • Peek – возврат самого большого по приоритету элемента. Обращаем ваше внимание, что элемент не удаляется из очереди.
  • Show – отображение всех элементов очереди на экран. Припоказе элемента также необходимо отображать приоритет.

Измените класс из задания 2 на шаблонный класс.


Реализовать базу данных ГАИ по штрафным квитанциям с помощью бинарного дерева.
Ключом будет служить номер автомашины, значением узла — список правонарушений.
Если квитанция добавляется в первый раз, то в дереве появляется новый узел, если нет, то данные заносятся в существующий список. Необходимо также реализовать следующие операции:

  • Полная распечатка базы данных (по номерам машин и списку правонарушений, числящихся за ними);
  • Распечатка данных по заданному номеру;
  • Распечатка данных по диапазону номеров.

Студент містить наступні поля – прізвище, дата народження, група.
Створити динамічну структуру хеш - таблицю. Вона повинна містити такий функціонал:
добавити студента, видалити, вивести на екран всю таблицю, або одного студента;
пошук студента по прізвищу, групі;
реалізувати збереження та завантаження хеш таблиці.
Зробити меню для роботи з хеш-таблицею.


Описать базовый класс «Строка».
Методы:

  1. конструктор без параметров;
  2. конструктор, принимающий в качестве параметра C-строку (заканчивается нулевым байтом);
  3. конструктор копирования;
  4. оператор присваивания;
  5. получение длины строки;
  6. очистка строки (сделать строку пустой);
  7. деструктор;
  8. конкатенация строк (перегрузить операторы + и +=);
  9. проверка на равенство (==) и на неравенство (!=).

Описать класс «Битовая строка» производный от класса «Строка» (Строки данного класса могут содержать только символы ‘0’ и ‘1’).
Если в основе инициализирующей строки встретятся любые символы, отличные от допустимых, то «Битовая строка» становится пустой.
Содержимое строки рассматривается как двоичное представление целого числа со знаковым разрядом. Отрицательные числа хранятся в дополнительном коде.
Методы:

  1. конструктор без параметров;
  2. конструктор, принимающий в качестве параметра C-строку;
  3. конструктор копирования;
  4. оператор присваивания;
  5. деструктор;
  6. изменение знака числа (перевод числа в дополнительный код).
  7. сложение битовых строк (перегрузить операторы + и +=);
  8. проверка на равенство (==) и на неравенство(!=).

Создать базовый класс «Домашнее животное» и производные классы «Собака», «Кошка», «Попугай».
С помощью конструктора установить имя каждого животного и его характеристики.


Создать класс СПРАВОЧНИК со следующими полями:

  1. Название фирмы;
  2. Владелец;
  3. Телефон;
  4. Адрес;
  5. Род деятельности.

Реализовать следующие возможности:

  1. Поиск по названию;
  2. Поиск по владельцу;
  3. Поиск по номеру телефона;
  4. Поиск по роду деятельности;
  5. Показ всех записей и добавление.

Вся информация, должна сохранятся в файле, должна быть реализована возможность добавления новых данных.


К уже существующему проекту класса Student добавьте механизмы сохранения / загрузки данных класса.
Используйте механизм потоков для файловых операций.


К уже существующему проекту класса Дробь добавьте механизмы сохранения / загрузки данных класса.
Используйте механизм потоков для файловых операций.


Используя понятие множественного наследования, разработайте класс «Окружность, вписанная в квадрат».


Используя механизм множественного наследования разработайте класс “Автомобиль”. Должны быть классы “Колеса», «Двигатель», «Двери» и т. д.


Реализуйте программу, которая предоставляет функциональность по работе с файлами.
Приложение получает у пользователя путь к файлу, после чего программа отображает интерфейс по анализу содержимого файла.
Возможности интерфейса:

  • Поиск заданной строки (по итогам показывать статистику поиска строки по всему файлу);
  • Замена строки на новую строку (по итогам показать статистику по замене строки);
  • Отображение файла на экран;
  • Переворот содержимого файла.
    Используйте для работы с файлами потоки, а для работы со строками класс string.

Создайте приложение «Валидатор HTML - файлов».
Приложение запрашивает у пользователя путь к файлу, после чего проверяет файл на валидность.
Критерием валидности для вашего проекта являются правила: все открытые теги должны закрываться, если был знак < его должен закрыть знак >.
По итогам валидации нужно отобразить результат проверки на экран.
Используйте для работы с файлами потоки, а для работы со строками класс string.


Создайте иерархию классов по работе с файлами.
Базовый класс умеет открывать файл и отображать его содержимое в консоль, первый класс потомка открывает файл и отображает содержимое в виде ASCII-кодов символов, расположенных в файле, второй класс потомка открывает файл и показывает его содержимое в двоичном виде и т. д.
Для отображения содержимого файла в базовом классе определена виртуальная функция void Display(const char* path); path — путь к файлу.
Потомки создают свою реализацию виртуальной функции.


Создать абстрактный базовый класс с виртуальной функцией — корни уравнения.
Создать производные классы: класс линейных уравнений и класс квадратных уравнений.
Определить функцию вычисления корней уравнений.


Создайте абстрактный класс Shape для рисования плоских фигур.
Определите виртуальные методы:
• Show() — вывод на экран информации о фигуре,
• Save() — сохранение фигуры в файл,
• Load() — считывание фигуры из файла.
Определите производные классы:
• Square — квадрат, который характеризуется координатами левого верхнего угла и длиной стороны;
• Rectangle — прямоугольник с заданными координатами верхнего левого угла и размерами;
• Circle — окружность с заданными координатами центра и радиусом;
• Ellipse — эллипс с заданными координатами верхнего угла описанного вокруг него прямоугольника со сторонами, параллельными осям координат, и размерами этого прямоугольника.
Создайте массив фигур, сохраните фигуры в файл, загрузите в другой массив и отобразите информацию о каждой из фигур.


У вхідному рядку записана послідовність чисел через пробіл.
Для кожного числа виведіть слово YES (в окремому рядку), якщо це число раніше зустрічалося в послідовності або NO, якщо не зустрічалося.
Вводиться число N - кількість елементів списку, а потім N чисел.

Sample Input:
6
1 2 3 2 3 4

Sample Output:
NO
NO
NO
YES
YES
NO

Дано два списки чисел, які можуть містити до 100000 чисел кожен.
Порахуйте, скільки чисел міститься одночасно як в першому списку, так і в другому.

Sample Input:
3
1 3 2
3
4 3 2
Sample Output:
2

Дано два списки чисел, які можуть містити до 100000 чисел кожен.
Виведіть всі числа, які входять як в перший, так і в другій список в порядку зростання.
Вводиться число N - кількість елементів першого списку, а потім N чисел першого списку.
Потім вводиться число M - кількість елементів другого списку, а потім M чисел другого списку.

Sample Input:
3
1 3 2
3
4 3 2
Sample Output:
2 3

Девятка - карточная игра
Цель игры: избавиться первым от всех своих карт.
Правила игры.
Сдатчик карт выбирается по желанию.
Колода тщательно тасуется и полностью раздается между всеми игроками.
Карты раздаются строго по одной.
У игроков должно быть равное количество карт.
Первым ходит игрок, у которого есть девятка треф.
Игрок кладет ее по центру стола в открытом виде.
Следующий игрок по часовой стрелке может положить слева от девятки треф - восьмерку треф или справа от девятки треф - 10 треф или он может начать новый ряд, положить под девяткой треф или сверху девятки треф любую девятку другой масти.
Если у игрока нет возможности положить карту, то он пропускает ход и ход переходит к следующему игроку по часовой стрелке, который должен выложить карту по тем же правилам.
Стратегия игры такова, что игрок должен препятствовать другим игрокам выложить имеющиеся у них карты.
Тот игрок, который первым избавится от всех своих карт, считается победителем.


Написати програму «Інформаційну систему про студентів».
Система містить інформацію про студентів. Кожен студент містить поля: ПІБ, вік.
Забезпечити систему таким меню:

  1. Добавити студента в початок списку;
  2. Добавити студента в кінець списку;
  3. Добавити студента в позицію списку;
  4. Видалити студента зі системи;
  5. Видалити студентів старше зазначеного віку;
  6. Видалити студентів у яких є набір введених символів у прізвищі (Введено «ко» Потрібно видалити студентів Устименко, Петренко, Мокон, Колотило, …);
  7. Відсортувати за ПІБ від А - Я;
  8. Відсортувати за ПІБ від Я - А;
  9. Відсортувати за віком по зростанню;
  10. Відсортувати за віком по спаданню;
  11. Видалити дублікати студентів.
  12. Виведення інформації про всіх студентів;
  13. Виведення інформації про конкретного студента.

About

C++

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors