2009-02-22 3 views
-1

Массивы в элементах C/C++ из N имеют нижние индексы от 0 как нижнюю границу до N-1 как верхнюю границу. Другие языки, такие как Pascal, позволяют пользователю указывать значения нижних и верхних индексов для создания массива элементов (верхняя граница - нижняя граница + 1).Конструктор для класса

Вопрос: Создайте класс «Массив» на C++, который позволяет пользователю указывать обе формы массивов. Каждый элемент массива будет значением с плавающей запятой. Класс состоит в том, чтобы максимально увеличить объем информации. Четко покажите информацию, которая попадает в файл заголовка array.h и в исходный файл array.cpp. Файл заголовка должен гарантировать, что несколько копий информации файла заголовка не должны существовать в каком-либо файле исходного кода.

Может ли кто-нибудь помочь мне с этим? Благодарю.

+0

С какой частью вам нужна помощь? Назначение звучит довольно ясно для меня. –

+0

Вы должны четко указать в своем вопросе, что это домашнее задание. Кроме того, ваш вопрос должен быть более ясным. С чем вам нужна помощь, разве вы не понимаете задание? – Guffa

+0

почему бы вам не показать нам, что у вас есть, и, может быть, тогда вы получите немного руководства –

ответ

2

Надевание всех ваших вопросов в стеке.

Popping их ...

Может кто-нибудь помочь мне с этим?

Давайте посмотрим.

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

Когда-либо слышал о защитнике заголовка? Или, # прагма? Это два решения, но вам нужно разобраться в плюсах и минусах каждого.

Пояснить информацию, которая попадает в файл заголовка array.h и в исходный файл array.cpp.

Вы знакомы с программированием на C или C++?

Класс предназначен для максимального увеличения объема информации.

Инкапсуляция. Любой стандартный текст на C++/OOD поможет вам. Идея состоит в том, чтобы иметь интерфейсы и создавать свой код вокруг них.

Каждый элемент массива будет иметь значение с плавающей точкой

Конечно, почему нет?

Создайте класс «Массив» на C++, который позволяет пользователю указывать обе формы массивов.

Несомненно. Нужно ли иметь многомерные массивы? Все, что вам нужно сделать, это перевести между этими формами. Какой синтаксис вы ожидаете от своих пользователей при использовании вашего класса массива? Например: популярной формой является обращение к элементам массива с помощью оператора [], как в float_array [i], где i = 0, 1, ... N-1.

class Array { 
    public: 
    explicit Array(size_t n); // default array, C-style indexing 
    Array(size_t begin, size_t end); // Pascal-style indexing 
    private: 
    float *_a; 
}; 

Это поможет вам начать работу. Сообщите нам, есть ли у вас больше вопросов.

0

рискуя перебраться через верх с этим, я бы пошел с шаблоном решения. Это намного элегантнее. Что-то вроде этого может быть:

template<int START, int END> 
class Array 
{ 
    float operator[](int i) { ... } 
... 
private: 
    float m_data[END - START]; 

};