Форум программистов, компьютерный форум CyberForum.ru

Инкапсуляция. Классы и их компоненты. Объекты - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Динамический список http://www.cyberforum.ru/cpp-beginners/thread164561.html
Помогите решить задачу. Вчера обращалась, знаю, стыдно. ._. В общем, другая задачка и большая просьба написать её на этом уровне: ссылка удалена Слёзно прошу! Т_Т Само задание, в общем-то... Сформировать динамический список (стек или очередь), считая, что длина списка (количество элементов) задана. В составе программы описать функцию, которая находит наибольший элемент списка и его...
C++ Создать два объекта и определить минимальное значение из чисел Описать класс , который хранит значение двух чисел и функцию для определения минимального из них , числа должны быть с ограниченым доступом , функция с открытым доступом . Создать два объекта и определить минимальное значение из чисел . http://www.cyberforum.ru/cpp-beginners/thread164452.html
Классы: круг, квадрат, прямоугольник C++
Описать классы соответсвующие кругу , квадрату и прямоугольнику . В каждом из классов реализовать функцию подсчета площади фигуры , сравнить площади фигур какая из них больше .
Сеть Dos <-> Windows C++
Есть ли у кого исходники или какая-нить информация по организации сети межу станциями на ОС DOS и Windows? Спасибо.
C++ Описать функцию, которая удаляет все минимальные элементы из списка http://www.cyberforum.ru/cpp-beginners/thread164390.html
Помогите пожалуйста. Я студент второго курса. (Не программист ни разу >.<") Мне нужна помощь в написании программы. Завтра уже нужно принести результат. Вот сама задача: Сформировать динамический список (стек или очередь), считая, что длина списка (количество элементов) задана. В составе программы описать функцию, которая удаляет все минимальные элементы из списка. Очень прошу помощи!
C++ Создание службы в Visual Studio Доброго всем времени суток! Есть проблема: Нужно портировать на С++ код написанного на Си-Шарпе приложения-службы. Именно так, чтобы программа была в натив-кодах. Попробовал писать в С++ Билдере - почему-то глюк на глюке (версия 2009). Как можно создать проект службы в Visual Studio именно в натив-коде, а не в CLR? Заранее спасибо! Добавлено через 2 минуты Сорри, вопрос исчерпан. Ответ... подробнее

Показать сообщение отдельно
Nameless One
Эксперт С++
 Аватар для Nameless One
5759 / 3408 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
10.09.2010, 07:05     Инкапсуляция. Классы и их компоненты. Объекты
Код ужасен... Где Вы его раздобыли? Вот более правильная реализация:
arr.hpp:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
// Объявление класса iarray
 
#ifndef ARR_HPP
#define ARR_HPP
 
#include <iostream>
 
class iarray
{
 
public: // Публичные методы
    
    // Конструкторы - управляют инициализацией объектов класса
    iarray(size_t size = DEFAULT_SIZE);
    iarray(size_t size, const int* array);
    // Деструкторы - управляют зачисткой объектов класса
    ~iarray();
    
    // Ввод данных
    void setArray(int* array);
    // Вывод массива (константый метод)
    const int* getArray() const;
    // Вывод размера массива (константный метод)
    size_t size() const;
    
    // Перегруженный оператор доступа по индексу
    int& operator [] (size_t index);
    // Перегруженный дружественный оператор вывода в поток
    friend std::ostream& operator << (std::ostream& os, const iarray& rhs);
    
private: // Закрытые данные
    
    size_t  m_nSize; // Размер массива
    int*    m_pArr; // Массив
    static const size_t DEFAULT_SIZE = 10; // Значение по умолчанию для размера
};
 
#endif
arr.cpp:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
// Реализация класса iarray
 
#include "arr.hpp"
 
#include <stdexcept>
 
iarray::iarray(size_t size)
    : m_nSize(size)
{
    m_pArr = new int[m_nSize];
}
 
iarray::iarray(size_t size, const int* array)
    : m_nSize(size)
{
    m_pArr = new int[m_nSize];
    for(size_t i = 0; i < m_nSize; ++i)
        m_pArr[i] = array[i];
}
 
iarray::~iarray()
{
    delete[] m_pArr;
}
 
void iarray::setArray(int* array)
{
    for(size_t i = 0; i < m_nSize; ++i)
        m_pArr[i] = array[i];
}
 
const int* iarray::getArray() const
{
    return m_pArr;
}
 
size_t iarray::size() const
{
    return m_nSize;
}
 
int& iarray::operator [] (size_t index)
{
    if(index >= m_nSize) // Если индекс превышает максимально допустимый...
        throw std::runtime_error("Index is out of range"); // ...то выбрасывается исключение
    return m_pArr[index];
}
 
std::ostream& operator << (std::ostream& os, const iarray& rhs)
{
    for(size_t i = 0; i < rhs.m_nSize; ++i)
        os << "#" << i + 1 << " -> " << rhs.m_pArr[i] << std::endl;
    return os;
}
main.cpp:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
// Пример использования разработанного класса
 
#include <iostream>
#include <ctime>
#include <cstdlib>
#include "arr.hpp"
 
int main()
{
    srand(static_cast<size_t>(time(NULL)));
    size_t sz = 15;
    iarray a1(sz);
    for(size_t i = 0; i < a1.size(); ++i)
        a1[i] = rand() % sz + sz;
    const int* a2 = a1.getArray();
    std::cout << "Generated array:\n( ";
    for(size_t i = 0; i < a1.size(); ++i)
        std::cout << a2[i] << " ";
    std::cout << ")" << std::endl;
    iarray a3(a1.size(), a2);
    std::cout << a3;
    return EXIT_SUCCESS;
}
 
Текущее время: 00:59. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru