Другие языки программирования и технологии
Задача - описать класс "Массив" с параметрами: длина массива, указатель на первый элемент массива
Вообще предстоит решить задачу на рациональные числа с помощью класса "Массив". С классом "рац числа" проблем не возникло, единственное, не могу никак понять: что от меня требуется сделать в классе "массив"??? мне нужно реализовать массив длины n? каким образом? использовать связный список?
Я понимаю задачу так. Сделать упрощенный вариант std::vector.
Что такое параметры класса - автору задачи виднее. Но под "указателем на первый элемент массива" я все же склонен понимать указатель, к которому применима адресная арифметика и который можно использовать как буфер памяти (аналог std::vector::data() в C++11 или &v[0] при годе Стандарта < 11), т. е. нужен сплошной блок памяти для внутреннего хранения.
PS. И советую там от греха такое, чтоб не возиться:
MyClass(const MyClass&) = delete;
MyClass& operator=(const MyClass&) = delete;
Сильно упростит код, особенно если требования к базовому типу данных (YouRealNumber или что там у Вас) сложные.
Проще запретить копирование, чем возиться с in-place конструкторами Вашего базового типа, про это новички вообще не знают. Вариант Павла Мудреца - один из самых сложных. Запретите копирование и не думайте о нем больше.
Что такое параметры класса - автору задачи виднее. Но под "указателем на первый элемент массива" я все же склонен понимать указатель, к которому применима адресная арифметика и который можно использовать как буфер памяти (аналог std::vector::data() в C++11 или &v[0] при годе Стандарта < 11), т. е. нужен сплошной блок памяти для внутреннего хранения.
PS. И советую там от греха такое, чтоб не возиться:
MyClass(const MyClass&) = delete;
MyClass& operator=(const MyClass&) = delete;
Сильно упростит код, особенно если требования к базовому типу данных (YouRealNumber или что там у Вас) сложные.
Проще запретить копирование, чем возиться с in-place конструкторами Вашего базового типа, про это новички вообще не знают. Вариант Павла Мудреца - один из самых сложных. Запретите копирование и не думайте о нем больше.
>С классом "рац числа" проблем не возникло
Фигасе.. . То есть НОД и автоматическое сокращение, математические операции, представление в виде правильной и неправильной дроби - все уже готово? А вот массив - проблема?
Динамические массивы организовываются по-разному в зависимости от конкретного языка. Связный список - это вариант, но это медленно. Обычно просто выделяется в куче нужное количество памяти под указатели на объекты и все. Дополнительно надо описать методы добавления, удаления по индексу и т. д..
Фигасе.. . То есть НОД и автоматическое сокращение, математические операции, представление в виде правильной и неправильной дроби - все уже готово? А вот массив - проблема?
Динамические массивы организовываются по-разному в зависимости от конкретного языка. Связный список - это вариант, но это медленно. Обычно просто выделяется в куче нужное количество памяти под указатели на объекты и все. Дополнительно надо описать методы добавления, удаления по индексу и т. д..
ну не совсем. В связном списке, каждый элемент знает кто его потомок и больше ничего. Массив же просто ячейки памяти к которым можно обратится по смещению от первого элемента. Т. е это должен быть такой класс:
1. преобращение по имени долже возвращаться 0 элемент
2. при вызове по индексу должен возвращатся елемент из ячейки 0+index*размер данных
3. должны обрабатыватся всякие ислючения, вроде лезем за границы массива
1. преобращение по имени долже возвращаться 0 элемент
2. при вызове по индексу должен возвращатся елемент из ячейки 0+index*размер данных
3. должны обрабатыватся всякие ислючения, вроде лезем за границы массива
Собственно в данном случае ничего сложного делать не нужно. При создании массива - выделять память и все, при уничтожение - освобождать. Реализовать операторы квадратных скобок и прочие.
class MyArray {
public:
MyArray(int size);
MyArray(MyArray& src);
~MyArray();
T operator[](int index);
};
Также лучше реализовать шаблон по типу и счетчик использования данных.
class MyArray {
public:
MyArray(int size);
MyArray(MyArray& src);
~MyArray();
T operator[](int index);
};
Также лучше реализовать шаблон по типу и счетчик использования данных.
Похожие вопросы
- 1.Заполнить массив случайными числами. Вывести элементы массива на экран. Заменить все его минимальные элементы нулями.
- Помогите с массивами! Найти и вывести на экран сумму нечётных элементов массива и количество отрицательных.
- Работа с массивами. Объявление массивов. Изменение и чтение элементов массива
- Дано вещественное число R и массив размера N. Найти элемент массива, который наименее близок к данному числу
- Написать программу работы с одномерным массивом из 15 вещественных элементов для решения задач:
- Объясните пожалуйста, что означает эта строка WRITE('ВВЕДИTE ЭЛЕМЕНТ МАССИВА '); READLN(MAS[1])?
- В одномерном массиве, состоящем из n вещественных элементов, вычис- лить: 39 1) сумму положительных элементов массив
- ПОМОГИТЕ, ДОБРЫЕ ЛЮДИ!!! Язык С++, записать в массив d нечетные элементы массива А которых нет в В - НЕ ПОЛУЧАЕТСЯ
- Поиск наибольшего отрицательного элемента массива (c++) и его удаление, написал программу, где то косячек =/
- обработка двумерных массивов (заменить по условию элементы на 0)