12083

Робота з динамічною памяттю

Лабораторная работа

Информатика, кибернетика и программирование

Тема. Робота з динамічною пам’яттю Мета. Навчитися виділяти місце під об’єкти динамічно. Навчитися створювати та використовувати конструктор копіювання перевантажувати оператор присвоєння. Ознайомитися з принципами створення та функціонування деструкторів.

Украинкский

2013-04-24

78.5 KB

10 чел.

Тема. Робота з динамічною пам’яттю 

Мета. Навчитися виділяти місце під об’єкти динамічно. Навчитися створювати та використовувати конструктор копіювання, перевантажувати оператор присвоєння. Ознайомитися з принципами створення та функціонування деструкторів.

Теоретичні відомості.

Завдання для лабораторної роботи

  1.  Створити клас відповідно до завдання (див. Додаток).
  2.  Розробити для класу конструктор за замовчуванням та декілька звичайних конструкторів. Реалізувати функції-члени відповідно до завдання (див. Додаток).
  3.  Створити конструктор копіювання.
  4.  Перевантажити операцію присвоєння.
  5.  Створити деструктор для вивільнення динамічно виділеної пам’яті.
  6.  Продемонструвати розроблені можливості класу завдяки створеному віконному застосуванню.  

Додаток

  1.  Клас Matrix – матриця. Пам’ять під елементи масиву повинна виділятися динамічно.

Реалізувати такі функції члени:

  •  Знаходження максимального значення матриці.
    •  Знаходження мінімального значення матриці.
    •  Знаходження максимального значення в заданому рядку.
    •  Знаходження мінімального значення в заданому стовпці.
    •  Зміна розмірів матриці.

Перевантажити операції. При цьому вибір механізму перевантаження обрати самостійно (чи метод, чи дружня-функція):

  •  Додавання
  •  Віднімання
  •  Множення
  •  Множення на скаляр.
  •  Введення матриці з StringGrid (<<)
  •  Виведення матриці у StringGrid(>>)
  •  Виведення матриці у Memo(>>)

Забезпечити можливість отримання значення елементу [i][j] подібно до доступу до елементів звичайного двовимірного масиву.

  1.  Клас Array – одновимірний масив. Пам’ять під елементи масиву повинна виділятися динамічно.

Реалізувати такі функції члени:

  •  Знаходження максимального значення.
    •  Знаходження мінімального значення.
    •  Знаходження середнього арифметичного значення масиву.
    •  Сортування елементів масиву методом вибірки за спаданням.
    •  Сортування елементів масиву методом бульбашки за зростанням.
    •  Зміна розмірів масиву.

Перевантажити операції. При цьому вибір механізму перевантаження обрати самостійно (чи метод, чи дружня-функція):

  •  Додавання (почленне додавання елементів масиву)
  •  Віднімання (почленне віднімання елементів масиву)
  •  Множення на скаляр.
  •  Введення масиву з StringGrid (<<)
  •  Виведення масиву у StringGrid(>>)
  •  Виведення масиву у Memo(>>)

Забезпечити можливість отримання значення елементу [i] подібно до доступу до елементів звичайного одновимірного масиву.

  1.  Клас Mnogyna – множина цілочисельних значень. Пам’ять під елементи множини повинна виділятися динамічно.

Реалізувати такі функції члени:

  •  Перевірка на належність елемента множині.
    •  Знаходження потужності множини.
    •  Знаходження максимального значення серед значень множини.
    •  Знаходження мінімального значення серед значень множини.
    •  Додавання елемента до множини.
    •  Видалення елемента з множини.

Перевантажити операції. При цьому вибір механізму перевантаження обрати самостійно (чи метод, чи дружня-функція):

  •  Додавання (об’єднання множин).
  •  Віднімання (перетин множин).
  •  Ділення (різниця множин)
  •  Введення множини з StringGrid (<<)
  •  Виведення множини у StringGrid(>>)
  •  Виведення множини у Memo(>>)
  1.  Клас Strichka – стрічка символів (масив елементів символьного типу). Пам’ять під елементи масиву повинна виділятися динамічно.

Реалізувати такі функції члени:

  •  Видалення заданого символу із стрічки.
    •  Знаходження кількості входжень заданого символу у стрічку.
    •  Сортування символів стрічки в алфавітному порядку у порядку зростання.
    •  Сортування символів стрічки в алфавітному порядку у порядку спадання.
    •  Вставлення однієї стрічки у іншу з заданої позиції.
    •  Зміна розміру стрічки.

Перевантажити операції. При цьому вибір механізму перевантаження обрати самостійно (чи метод, чи дружня-функція):

  •  Додавання (конкатенація стрічок)
  •  Віднімання (видалення із першої стрічки першого входження другої)
  •  Введення стрічки з StringGrid (<<)
  •  Введення стрічки з Edit (<<)
  •  Виведення стрічки у StringGrid(>>)
  •  Виведення стрічки у Memo(>>)
  •  Виведення стрічки у Edit(>>)
  •  Виведення стрічки у Label(>>)

Забезпечити можливість отримання значення елементу [i] подібно до доступу до елементів звичайного одновимірного масиву.

  1.  Клас Matrix – матриця. Пам’ять під елементи масиву повинна виділятися динамічно. Елементи матриці повинні зберігатися у одновимірному масиві.

Реалізувати такі функції члени:

  •  Знаходження максимального значення матриці.
    •  Знаходження мінімального значення матриці.
    •  Знаходження середнього арифметичного значення матриці.
    •  Зміна розмірів матриці.
    •  Транспонування матриці.
    •  Знаходження оберненої матриці до заданої.

Перевантажити операції. При цьому вибір механізму перевантаження обрати самостійно (чи метод, чи дружня-функція):

  •  Додавання
  •  Віднімання
  •  Множення
  •  Множення на скаляр.
  •  Введення матриці з StringGrid (<<)
  •  Виведення матриці у StringGrid(>>)
  1.  Клас Matrix – матриця. Пам’ять під елементи масиву повинна виділятися динамічно.

Реалізувати такі функції члени:

  •  Знаходження максимального значення матриці.
    •  Знаходження середнього арифметичного значення матриці.
    •  Сортування заданого рядка методом вибірки за зростанням.
    •  Сортування заданого стовпця методом вибірки за спаданням.
    •  Зміна розмірів матриці.
    •  Підняття матриці до заданого степеня.

Перевантажити операції. При цьому вибір механізму перевантаження обрати самостійно (чи метод, чи дружня-функція):

  •  Додавання
  •  Віднімання
  •  Множення
  •  Множення на скаляр.
  •  Введення матриці з StringGrid (<<)
  •  Виведення матриці у StringGrid(>>)
  •  Виведення матриці у Memo(>>)

Забезпечити можливість отримання значення елементу [i][j] подібно до доступу до елементів звичайного двовимірного масиву.

  1.  Клас Array – одновимірний масив. Пам’ять під елементи масиву повинна виділятися динамічно.

Реалізувати такі функції члени:

  •  Знаходження максимального значення.
    •  Знаходження мінімального значення.
    •  Знаходження мінімального додатного.
    •  Знаходження максимального від’ємного.
    •  Сортування елементів масиву методом бульбашки за зростанням та спаданням.
    •  Зміна розмірів масиву.

Перевантажити операції. При цьому вибір механізму перевантаження обрати самостійно (чи метод, чи дружня-функція):

  •  Додавання (почленне додавання елементів масиву)
  •  Віднімання (почленне віднімання елементів масиву)
  •  Поелементний зсув вліво (- -).
  •  Поелементний зсув вправо (++)
  •  Введення масиву з StringGrid (<<)
  •  Виведення масиву у StringGrid(>>)
  •  Виведення масиву у Memo(>>)

Забезпечити можливість отримання значення елементу [i] подібно до доступу до елементів звичайного одновимірного масиву.

  1.  Клас Mnogyna – множина цілочисельних значень. Пам’ять під елементи множини повинна виділятися динамічно.

Реалізувати такі функції члени:

  •  Перевірка на належність елемента множині.
    •  Знаходження потужності множини.
    •  Знаходження максимального від’ємного значення серед значень множини.
    •  Знаходження мінімального додатного значення серед значень множини.
    •  Знаходження максимального за модулем значення.
    •  Додавання елемента до множини.
    •  Видалення елемента з множини.

Перевантажити операції. При цьому вибір механізму перевантаження обрати самостійно (чи метод, чи дружня-функція):

  •  Додавання (об’єднання множин).
  •  Віднімання (перетин множин).
  •  Порівняння множин (==)
  •  Введення множини з StringGrid (<<)
  •  Виведення множини у StringGrid(>>)
  •  Виведення множини у Memo(>>)
  1.  Клас Strichka – стрічка символів (масив елементів символьного типу). Пам’ять під елементи масиву повинна виділятися динамічно.

Реалізувати такі функції члени:

  •  Видалення заданого символу із стрічки.
    •  Заміна всіх входжень одного символу в стрічці заданим символом.
    •  Сортування символів стрічки в алфавітному порядку у порядку зростання.
    •  Вставлення однієї стрічки у іншу з заданої позиції.
    •  Зміна розміру стрічки.

Перевантажити операції. При цьому вибір механізму перевантаження обрати самостійно (чи метод, чи дружня-функція):

  •  Додавання (конкатенація стрічок)
  •  Порівняння стрічок(< та >) (більшою вважається та, яка йде першою в алфавітному порядку).
  •  Рівність (==)
  •  Введення стрічки з StringGrid (<<)
  •  Введення стрічки з Edit (<<)
  •  Виведення стрічки у StringGrid(>>)
  •  Виведення стрічки у Memo(>>)
  •  Виведення стрічки у Edit(>>)
  •  Виведення стрічки у Label(>>)

Забезпечити можливість отримання значення елементу [i] подібно до доступу до елементів звичайного одновимірного масиву.

  1.  Клас Matrix – матриця. Пам’ять під елементи масиву повинна виділятися динамічно. Елементи матриці повинні зберігатися у одновимірному масиві.

Реалізувати такі функції члени:

  •  Знаходження максимального від’ємного значення матриці.
    •  Знаходження мінімального додатного значення матриці.
    •  Знаходження максимального за модулем значення матриці.
    •  Зміна розмірів матриці.
    •  Транспонування матриці.
    •  Обертання матриці.

Перевантажити операції. При цьому вибір механізму перевантаження обрати самостійно (чи метод, чи дружня-функція):

  •  Додавання
  •  Віднімання
  •  Множення
  •  Додавання до матриці одиничної (++)
  •  Введення матриці з StringGrid (<<)
  •  Виведення матриці у StringGrid(>>)


 

А также другие работы, которые могут Вас заинтересовать

83669. Теорема об активном двухполюснике для симметричных составляющих 162.5 KB
  При мысленном устранении несимметрии несимметричного участка для оставшейся цепи имеет место симметричный режим холостого хода. В соответствии с методом эквивалентного генератора теперь необходимо определить эквивалентные ЭДС и входные сопротивления симметричной цепи. Величина соответствующая напряжению холостого хода на зажимах подключения локальной несимметрии определяется при отключении локальной несимметричной нагрузки любым известным методом расчета линейных цепей причем в силу симметрии цепи расчет проводится для одной фазы. В...
83670. Вращающееся магнитное поле 126.5 KB
  Магнитное поле катушки с синусоидальным током При пропускании по обмотке катушки синусоидального тока она создает магнитное поле вектор индукции которого изменяется пульсирует вдоль этой катушки также по синусоидальному закону Мгновенная ориентация вектора магнитной индукции в пространстве зависит от намотки катушки и мгновенного направления тока в ней и определяется по правилу правого буравчика. С учетом вышесказанного магнитное поле катушки с синусоидальным током называют пульсирующим. Круговое вращающееся магнитное поледвух и...
83671. Линейные электрические цепи при несинусоидальных периодических токах 129.5 KB
  Причины возникновения несинусоидальных напряжений и токов могут быть обусловлены или несинусоидальностью источника питания или и наличием в цепи хотя бы одного нелинейного элемента. Кроме того в основе появления несинусоидальных токов могут лежать элементы с периодически изменяющимися параметрами. Характеристики несинусоидальных величин Для характеристики несинусоидальных периодических переменных служат следующие величины и коэффициенты приведены на примере периодического тока: Максимальное значение .
83672. Резонансные явления в цепях несинусоидального тока 130 KB
  Как и при синусоидальных токах резонанс на кй гармонике соответствует режиму работы при котором ке гармоники напряжения и тока на входе цепи совпадают по фазе иначе говоря входное сопротивление входная проводимость цепи для кй гармоники вещественно. Для кй гармоники тока можно записать где действующее значение кй гармоники ЭДС. Таким образом при изменении С величина кй гармоники тока будет изменяться от нуля при С=0 до при достигая максимума при резонансе см. Следует отметить что несмотря на то что обычно с ростом...
83673. Переходные процессы в линейных электрических цепях с сосредоточенными параметрами 157.5 KB
  Для цепей с заданными постоянными или периодическими напряжениями токами источников принужденная составляющая определяется путем расчета стационарного режима работы схемы после коммутации любым из рассмотренных ранее методов расчета линейных электрических цепей. общее решение уравнения 2 имеет вид 4 Соотношение 4 показывает что при классическом методе расчета послекоммутационный процесс рассматривается как наложение друг на друга двух режимов – принужденного наступающего как бы сразу после коммутации и свободного имеющего...
83674. Способы составления характеристического уравнения 175.5 KB
  Путем исключения из системы уравнений описывающих электромагнитное состояние цепи на основании первого и второго законов Кирхгофа всех неизвестных величин кроме одной относительно которой и записывается уравнение 2; путем использования выражения для входного сопротивления цепи на синусоидальном токе; на основе выражения главного определителя. Согласно первому способу в предыдущей лекции было получено дифференциальное уравнение относительно напряжения на конденсаторе для последовательной RLCцепи на базе которого записывается...
83675. Переходные процессы в цепи с одним накопителем энергии и произвольным числом резисторов 167.5 KB
  Общий подход к расчету переходных процессов в таких цепях основан на применении теоремы об активном двухполюснике: ветвь содержащую накопитель выделяют из цепи а оставшуюся часть схемы рассматривают как активный двухполюсник А эквивалентный генератор см. Совершенно очевидно что постоянная времени здесь для цепей с индуктивным элементом определяется как: и с емкостным как: где входное сопротивление цепи по отношению к зажимам 12 подключения ветви содержащей накопитель энергии. Например для напряжения на конденсаторе в цепи на...
83676. Операторный метод расчета переходных процессов 174.5 KB
  Выделенную из некоторой сложной цепи. Замыкание ключа во внешней цепи приводит к переходному процессу при этом начальные условия для тока в ветви и напряжения на конденсаторе в общем случае ненулевые. Отсюда 2 где операторное сопротивление рассматриваемого участка цепи. Следует обратить внимание что операторное сопротивление соответствует комплексному сопротивлению ветви в цепи синусоидального тока при замене оператора р на .
83677. Некоторые важные замечания к формуле разложения 143.5 KB
  Если при этом в цепи также имеют место другие источники например постоянной Е и экспоненциальной ЭДС и начальные условия для токов в ветвях с индуктивными элементами и напряжений на конденсаторах ненулевые то они должны быть все введены в формулу предварительно умноженными на j поскольку только в этом случае они будут учтены при взятии мнимой части от формулы разложения т. Определение независимых начальных условий путем расчета докоммутационного режима работы цепи. Составление операторной схемы замещения цепи для простых цепей с...