Регистрация Главная Сообщество
Сообщения за день Справка Регистрация
Навигация
Zhyk.org LIVE! Реклама на Zhyk.org Правила Форума Награды и достижения Доска "почета"

Ответ
 
Опции темы
Старый 12.01.2012, 05:35   #1
 Разведчик
Аватар для GinFo
 
GinFo никому не известный тип
Регистрация: 05.01.2010
Сообщений: 13
Популярность: 10
Сказал(а) спасибо: 10
Поблагодарили 0 раз(а) в 0 сообщениях
Отправить сообщение для GinFo с помощью ICQ Отправить сообщение для GinFo с помощью Skype™
 
По умолчанию контейнер(ы) для хранения перечня(-ей) изменений. С++

Начну с самого задания. Мне нужно написать программу, реализующую работу с изменениями на примере редактора текстов.
Задачи:
1 Разработать контейнер(ы) для хранения перечня(-ей) изменений.
2 С использованием разработанных контейнеров реализовать следующие операции:
- отмена произведённых операций;
- возвращение отменённых операций.
3 Создать пользовательский интерфейс, реализующий отображение вводимого
текста, а также контейнеров отмены/возвращения. Создать помощник (wizard) для
настройки параметров отмены/возвращения.


В принципе с 2 и 3 пунктами я могу разобраться сам, но вот как написать контейнер...не могу никак сообразить. Чем можете помочь?


Код класс-контейнера, помогите настроить его под мое задание

Код:
// intarray.h

#ifndef __INT_ARRAY_H__
#define __INT_ARRAY_H__
#include <cstring> // for size_t, memcpy
namespace Container {
class IntArray {
public:
    IntArray();
    explicit IntArray(size_t /*size*/);
    IntArray(const IntArray& /*src*/);
    ~IntArray();
    inline size_t size() const;
    inline void clear();
    int& operator[] (size_t /*index*/);
    void insert(size_t /*insertIndex*/, int /*value*/);
    void remove(size_t /*removeIndex*/);
private:
    size_t size_;
    size_t reserved_;
    int* data_;
    inline void deleteData();
    void resize(size_t /*newLength*/);
};
} // namespace Container
#endif // __INT_ARRAY_H__



// intarray.cpp

#include <assert.h>
#include "intarray.h"
using namespace Container;
IntArray::IntArray()
    : size_(0), reserved_(0), data_(0) { }
IntArray::IntArray(size_t size) {
    size_ = size;
    reserved_ = size;
    data_ = new int[size_];
}
IntArray::IntArray(const IntArray& src) {
    size_ = src.size_;
    reserved_ = src.reserved_;
    data_ = new int[size_];
    // Gee, I can fly...
    memcpy(data_, src.data_, sizeof(int) * size_);
}
inline void
IntArray::deleteData() {
    delete[] data_;
    data_ = 0;
    size_ = 0;
    reserved_ = 0;
}
IntArray::~IntArray() {
    deleteData();
}
inline size_t
IntArray::size() const {
    return size_;
}
inline void
IntArray::clear() {
    resize(0);
}
int&
IntArray::operator[](size_t index) {
    assert(index >= 0 && index <= size_);
    return data_[index];
}
void
IntArray::resize(size_t newSize) {
    if(newSize <= 0) {
        deleteData();
        return;
    }
    int* newData = new int[newSize];
    reserved_ = newSize;
    if(size_ > 0) {
        int elementsToCopy = (newSize > size_) ? size_ : newSize;
        reserved_ = newSize - elementsToCopy;
        for(int index = 0; index < elementsToCopy; index++) {
            newData[index] = data_[index];
        }
    }
    delete[] data_;
    data_ = newData;
    size_ = newSize;
}
void
IntArray::insert(size_t insertIndex, int value) {
    if(insertIndex > size_ + reserved_){
        resize(insertIndex + 10); // put 10 elements in reserve
    }
    if(reserved_ < size_ + 1) {
        resize(size_ + 1 + 10); // put 10 elements in reserve
    }
    memmove(data_ + (insertIndex + 1),
            data_ + insertIndex,
            size_ - (insertIndex + 1) );
    data_[insertIndex] = value;
}
void
IntArray::remove(size_t removeIndex) {
    assert(removeIndex >= 0 && removeIndex < size_);
    memmove(data_ + (removeIndex),
            data_ + (removeIndex + 1),
            size_ - (removeIndex + 1) );
    data_[size_] = 0;
}

Последний раз редактировалось GinFo; 12.01.2012 в 20:33. Причина: дополнительная информация
  Ответить с цитированием
Старый 12.01.2012, 13:30   #2
 Разведчик
Аватар для to day
 
to day никому не известный тип
Регистрация: 27.02.2010
Сообщений: 3
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Отправить сообщение для to day с помощью ICQ
 
По умолчанию Re: контейнер(ы) для хранения перечня(-ей) изменений. С++

http://zhyk.ru/forum/showthread.php?t=273436
  Ответить с цитированием
Старый 12.01.2012, 16:51   #3
 Разведчик
Аватар для GinFo
 
GinFo никому не известный тип
Регистрация: 05.01.2010
Сообщений: 13
Популярность: 10
Сказал(а) спасибо: 10
Поблагодарили 0 раз(а) в 0 сообщениях
Отправить сообщение для GinFo с помощью ICQ Отправить сообщение для GinFo с помощью Skype™
 
По умолчанию Re: контейнер(ы) для хранения перечня(-ей) изменений. С++

У меня нет своего куска кода...точнее есть, но там только графика, а нужен контейнер...

Последний раз редактировалось GinFo; 12.01.2012 в 17:19.
  Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Информация] Перечень распространяющих сп-хак Nyamochka Общение и обсуждение S4 League 8 22.07.2010 13:25
Приложение для передачи и хранения голосов 3.1 или Дешевый рейтинг! [Tiger] Свободное обсуждение 6 12.12.2009 05:43

Заявление об ответственности / Список мошенников

Часовой пояс GMT +4, время: 01:36.

Пишите нам: [email protected]
Copyright © 2024 vBulletin Solutions, Inc.
Translate: zCarot. Webdesign by DevArt (Fox)
G-gaMe! Team production | Since 2008
Hosted by GShost.net