Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

иерархия классов

48K
13 июня 2009 года
elenSV
4 / / 30.05.2009
помогите доделать
иерархия классов и динамический полиморфизм
разработать програмную модель для заданной преподователем иерархии понятий
в программе должны быть задействованы все разработанные классы и продеманстрировано использование динамического полиморфизма

Рассмотреть модификацию магнитофона, который запоминает у себя в памяти все выполняемые пользователем действия. Считается что видиокассета обладает уникальным числовым идентификатором. В качестве тестовой программы рассмотреть задачу выполнения просмотра кассеты на магнитофоне, точный вид которого не определен. Просмотр сосстоит в последовательности след. операций: вставить кассету, перемотать кассету в начало, включить воспроизведение, выполнить останов и извлечь кассету.

Код:
class Record {
/* Я так представляю что "запись на кассете" содержит в себе какие-то элементы. Допустим слова.
   Тогда:
 */
    typedef std::string word;/* Элемент описывающий слово в записи. */
    std::vector<word> words;
};

class Cassete {
/* Кассета представляет собой коллекцию записей приведенных выше.
 */
    std::vector<Record> records;
};

Код:
#include <iostream>
#include <fstream>
#include <sstream>
#include <string>
#include <vector>

typedef std::string word;
typedef std::vector<word> words;
/***************************************************************************/

class Record {
    words words;
public:
    Record():words() {}
    Record(const std::string& b):words() { load(b); }
    ~Record() {}
    /*  */
    void load(const std::string& b) {
        std::stringstream buf(b);
        word word;

        while ( buf.eof() ) {
            buf >> word;
            words.push_back(word);
        }
    }
    void save(std::string& b) {
        std::stringstream buf;
        words::iterator it = words.begin();
        while ( it != words.end() ) {
            buf << *it << (it == words.end()) ? "" : " ";
            ++it;
        }
        b = buf.get();
    }
    void add(const word& w) {
        if ( w.empty() ) return;
        words.push_back(w);
    }
    bool contains(const word& w) const {
        words::const_iterator it = words.begin();
        while ( it != words.end() ) {
            if ( *it == w ) return true;
            ++it;
        }
        return false;
    }
};

/***************************************************************************/

int main(int argc, char** argv) {
    std::string str;
    std::fstream in("records.txt", std::ios::in);
    if ( !in ) {
        std::cout << "Can`t open records file. Terminate!\n";
        return 1;
    }
    Record rec;
    while ( !in.eof() ) {
        std::getline(in, str);
        rec.load(str);
    }

    return 0;
}

/***************************************************************************/

 
Код:
class Magnitofon {
/* Ну и сам Магнитофон, который все перечисленым выше, управляет.
 */
};
288
13 июня 2009 года
nikitozz
1.2K / / 09.03.2007
Цитата: elenSV
помогите доделать



Помочь доделать что? Что не получается?

48K
13 июня 2009 года
elenSV
4 / / 30.05.2009
class Cassete не получается
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог