Модераторы: bsa

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> классы 
:(
    Опции темы
elenSV
Дата 31.5.2009, 09:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 26.4.2009

Репутация: -1
Всего: -1



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

#include <iostream>
#include <string>
#include <vector>
using namespace std;
class magnitofon
{
        bool play, rec, kasset, stop;   // Процессы: воспроизведение, запись и наличие кассеты
        int rew;                                                // Процесс перемотки (положительное число - вперёд на заданный интервал, 
                                                                        // отрицательное число - назад на заданный интервал, 0 - бездействие)
 
        vector<string>  ListDat;                // Запоминает все действия
public:
        magnitofon()                                    // Конструктор
        {
                play = false;
                stop = false;                           // По-умолчанию все процессы выключены
                rec = false;
                rew = 0;
                kasset = false;                         // По-умолчванию кассеты нет
        }
 
        void m_stop()                                   // Метод останавливает все процессы видеомагнитофона
        {
                play = false;
                rec = false;
                rew = 0;
                ListDat.push_back("m_stop");
        }
 
        void m_play()                                   // Метод включает воспроизведение кассеты
        {
                m_stop();                                       // Может быть активен только один процесс, поэтому вызывается метод "Stop"
                play = true;
                ListDat.push_back("m_play");
        }
 
        void m_rew(int interval)                // Метод перематывает кассету в заданном направление
        {
                m_stop();
                rew = interval;                         // Перемотка на заданный интервал
                ListDat.push_back("m_rew");
        }
 
        void m_rec()                                    // Метод начинает запись
        {
                if (play) rec = true;           // Запись возможна только при включённом процессе play
                ListDat.push_back("m_rec");
        }
 
        void insert()                                   // Метод вставляет кассету
        {
                m_stop();
                kasset = true;
                ListDat.push_back("insert");
        }
 
        void get()                                              // Метод достаёт кассету      
        {
                m_stop();
                kasset = false ;
                ListDat.push_back("get");
        }
 
        bool check()                                    // Метод проверяет, есть ли кассета
        {
                return kasset;                          // Возвращает true, если кассета есть, в противном случае false.
        }
 
        void outListDat()
        {
                vector<string>::iterator it;
                for(it = ListDat.begin(); it != ListDat.end(); ++it)
                        cout<<*it<<endl;
        }
};
int main()
{
        magnitofon mag;
        mag.insert();
        mag.m_play();
        mag.m_rec();
        mag.m_rew(1);
        mag.m_stop();
        mag.get();
 
        mag.outListDat();
 
        system("pause");
        return 0;
}



PM MAIL   Вверх
mes
Дата 31.5.2009, 09:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



Цитата(elenSV @  31.5.2009,  08:01 Найти цитируемый пост)
помогите доделать

a что Вам нужно доделать форумчане должны сами догадаться ?!  smile 


--------------------
PM MAIL WWW   Вверх
zim22
Дата 31.5.2009, 09:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 29
Всего: 69



Цитата(elenSV @  31.5.2009,  09:01 Найти цитируемый пост)
помогите доделать

вы прикалываетесь, да?

это уже четвёртая копия темы под названием "классы":
http://forum.vingrad.ru/forum/topic-257715.html
http://forum.vingrad.ru/forum/topic-257677.html
http://forum.vingrad.ru/forum/topic-258813.html

Это сообщение отредактировал(а) zim22 - 31.5.2009, 09:52


--------------------
PM MAIL   Вверх
elenSV
Дата 31.5.2009, 10:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 26.4.2009

Репутация: -1
Всего: -1



название то одно - задачи разные
 smile 
 smile 
PM MAIL   Вверх
zim22
Дата 31.5.2009, 10:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 29
Всего: 69



Цитата(elenSV @  31.5.2009,  10:49 Найти цитируемый пост)
название то одно - задачи разные

задачи идентичные  smile 


--------------------
PM MAIL   Вверх
elenSV
Дата 31.5.2009, 10:58 (ссылка)    | (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 26.4.2009

Репутация: -1
Всего: -1



я даже не хочу с тобой разговаривать smile 
PM MAIL   Вверх
azesmcar
Дата 31.5.2009, 11:01 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 52
Всего: 211



zim22

5 если быть точным, одну MAKCim закрыл как дубликат.

Цитата(elenSV @  31.5.2009,  10:58 Найти цитируемый пост)
я даже не хочу с тобой разговаривать smile  

мне так думается грустить он по этому поводут не будет smile 

по теме, доставать касету было бы логичнее методом eject
Цитата(elenSV @  31.5.2009,  09:01 Найти цитируемый пост)
 void get()                                              // Метод достаёт кассету



Это сообщение отредактировал(а) azesmcar - 31.5.2009, 11:05
PM   Вверх
elenSV
Дата 31.5.2009, 11:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 26.4.2009

Репутация: -1
Всего: -1



не он точно будет грустить smile 
PM MAIL   Вверх
mes
Дата 31.5.2009, 11:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



Цитата(azesmcar @  31.5.2009,  10:01 Найти цитируемый пост)
по теме, доставать касету было бы логичнее методом eject

также приставка m_ у открытых методов лишняя, а вот приватным дата-членам она бы не помешала.

Добавлено @ 11:43
Цитата(elenSV @  31.5.2009,  08:01 Найти цитируемый пост)
помогите доделать

Цитата(zim22 @  31.5.2009,  08:32 Найти цитируемый пост)
это уже четвёртая копия темы 

Цитата(azesmcar @  31.5.2009,  10:01 Найти цитируемый пост)
5 если быть точным

и все же, интересно, что требуется доделать elenSV, чтоб ей не пришлось заводить 6ю тему.  smile 

Это сообщение отредактировал(а) mes - 31.5.2009, 11:44


--------------------
PM MAIL WWW   Вверх
elenSV
Дата 5.6.2009, 21:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 26.4.2009

Репутация: -1
Всего: -1



а если серьёзно
 класс для представления понятия "контроллер видеомагнитофона"(обеспечивает програмное управление видеомагнитофоном, который может осуществлять запись,вставить, извлечь кассету и проверить наличие кассеты, выполнять воспроизведение кассеты и осуществлть перемотку в указанном направлении
magnitofon.h
Код

#ifndef MAGNITOFON_H
#define MAGNITOFON_H

class magnitofon
{
   bool play, stop, rec, kasset, kaseta;        // Процессы: воспроизведение, запись и наличие кассеты
   int rew;                // Процесс перемотки (положительное число - вперёд на заданный интервал, 
                            // отрицательное число - назад на заданный интервал, 0 - бездействие)
public:
   magnitofon();           // Конструктор    
   void m_stop();       // Метод останавливает все процессы видеомагнитофона
   void m_play();       // Метод включает воспроизведение кассеты
   void m_rew(int interval);  // Метод перематывает кассету в заданном направление
   void m_rec();        // Метод начинает запись
   void insert();              // Метод вставляет кассету
   void get();               // Метод достаёт кассету      
   bool check();            // Метод проверяет, есть ли кассета
};
#endif // MAGNITOFON_H 

magnitofon.cpp
Код

magnitofon::magnitofon()           // Конструктор
 {
    play = false;
    stop = false;       // По-умолчанию все процессы выключены
    rec = false;
    rew = 0;
    kasset = false;    // По-умолчванию кассеты нет
 }

 void magnitofon::m_stop()       // Метод останавливает все процессы видеомагнитофона
 {
    play = false;
    rec = false;
    rew = 0;
 }

 void magnitofon::m_play()       // Метод включает воспроизведение кассеты
 {
    m_stop();        // Может быть активен только один процесс, поэтому вызывается метод "Stop"
    play = true;
 }

 void magnitofon::m_rew(int interval)  // Метод перематывает кассету в заданном направление
 {
    m_stop();
    rew = interval;          // Перемотка на заданный интервал
 }

 void magnitofon::m_rec()        // Метод начинает запись
 {
    if (play) rec = true;  // Запись возможна только при включённом процессе play
 }

 void magnitofon::insert()              // Метод вставляет кассету
{
    m_stop();
    kasset = true;
}

 void magnitofon::get()                // Метод достаёт кассету      
{
    m_stop();
    kaseta = false;
}

 bool magnitofon::check()            // Метод проверяет, есть ли кассета
 {
    return kasset;      // Возвращает true, если кассета есть, в противном случае false.
 } 


main.cpp
Код

#include "magnitofon.h"

int main()
{
  magnitofon m;
  return 0;

} 


как исправить чтобы выводил на экран всё что надо
как и что выводить в поток cout   smile 
поможите или  заводить 6ю тему.  smile 

Это сообщение отредактировал(а) elenSV - 5.6.2009, 21:42
PM MAIL   Вверх
azesmcar
Дата 5.6.2009, 21:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 52
Всего: 211



Цитата(elenSV @  5.6.2009,  21:40 Найти цитируемый пост)

что бы выводил на экран всё что надо
как и что выводить в поток cout   smile  

Замечательный вопрос..это вы нас спрашиваете?
а что требует выводить на экран задача?

Добавлено через 4 минуты и 13 секунд
Цитата(elenSV @  5.6.2009,  21:40 Найти цитируемый пост)
поможите или  заводить 6ю тему

Тогда вам сам господь бог не поможет smile
PM   Вверх
elenSV
Дата 5.6.2009, 21:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 26.4.2009

Репутация: -1
Всего: -1



 cout << "  Контроллер видеомагнитофона" << endl;
 cout<<"Кассета отсутствует"<<endl;
и так далее
как это записать
если можно без "Тогда вам сам господь бог не поможет "

PM MAIL   Вверх
azesmcar
Дата 5.6.2009, 22:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 52
Всего: 211



elenSV, 
Цитата(elenSV @  5.6.2009,  21:55 Найти цитируемый пост)
 cout << "  Контроллер видеомагнитофона" << endl;
 cout<<"Кассета отсутствует"<<endl;
и так далее
как это записать

т.е.? вот так и записать. Вначале функции main добавить.
setlocale(LC_ALL, "rus");

примерно так
Код

int main()
{
    setlocale(LC_ALL, "rus");
    cout << "Жизнь прекрасна!" << endl;
}


Это сообщение отредактировал(а) azesmcar - 5.6.2009, 22:08
PM   Вверх
elenSV
Дата 5.6.2009, 22:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 26.4.2009

Репутация: -1
Всего: -1



Код

main()
{
cout<<"----------Menu----------"<<endl;
cout<<"1. вставить кассету"<<endl;
cout<<"2.  извлечь кассету'"<<endl;
cout<<"3. проверить наличие кассеты"<<endl;
cout<<"4. запись"<<endl;
cout<<"5. перемотать на указанный интервал"<<endl;
cin>>x;
switch(x)
{
case 1: 
case 2:
case 3: 
case 4: 
case 5

ну вот допустим - создаю меню - как в case записать?
помогите нубу
PM MAIL   Вверх
azesmcar
Дата 5.6.2009, 22:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 52
Всего: 211



Код

int main()
{
    setlocale(LC_ALL, "rus");
    int x;
    cout<<"----------Menu----------"<<endl;
    cout<<"1. вставить кассету"<<endl;
    cout<<"2. извлечь кассету'"<<endl;
    cout<<"3. проверить наличие кассеты"<<endl;
    cout<<"4. запись"<<endl;
    cout<<"5. перемотать на указанный интервал"<<endl;
    cin>>x;

    int interval;

    magnitofon m;

    switch(x)
    {
    case 1: m.insert(); break;
    case 2: m.get(); break;
    case 3: m.check(); break;
    case 4: m.m_rec(); break;
    case 5:
        cout << "interval=";
        cin >> interval;
        m.m_rew(interval);
        break;
    }
}

PM   Вверх
elenSV
  Дата 8.6.2009, 23:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 26.4.2009

Репутация: -1
Всего: -1



класс для представления понятия "контроллер видеомагнитофона"(обеспечивает програмное управление видеомагнитофоном, который может осуществлять запись,вставить, извлечь кассету и проверить наличие кассеты, выполнять воспроизведение кассеты и осуществлть перемотку в указанном направлении
как здесь объявить копирующий конструктор, перегруженный оператор присваивания, inline и const в объявлениях методов и операторов
и манипулятор ввода и вывода в виде дружественных функций
magnitofon.h
Код

#ifndef MAGNITOFON_H
#define MAGNITOFON_H
#include <iostream>
#include <string>
#include <vector>
#include <clocale>
using namespace std;
class magnitofon
{
 private: 
   magnitofon();           // Конструктор    
   ~magnitofon(); //деконструктор 
   bool play, stop, rec, kasset, kaseta;        // Процессы: воспроизведение, запись и наличие кассеты
   int rew;                // Процесс перемотки (положительное число - вперёд на заданный интервал, 
public:
   magnitofon();           // Конструктор    
   void m_stop();       // Метод останавливает все процессы видеомагнитофона
   void m_play();       // Метод включает воспроизведение кассеты
   void m_rew(int interval);  // Метод перематывает кассету в заданном направление
   void m_rec();        // Метод начинает запись
   void insert();              // Метод вставляет кассету
   void get();               // Метод достаёт кассету      
   bool check();            // Метод проверяет, есть ли кассета
};
#endif // MAGNITOFON_H 

magnitofon.cpp
Код

magnitofon::magnitofon()           // Конструктор
 {
    play = false;
    stop = false;       // По-умолчанию все процессы выключены
    rec = false;
    rew = 0;
    kasset = false;    // По-умолчванию кассеты нет
   }
magnitofon::~magnitofon()           // деконструктор
{
} 
 void magnitofon::m_stop()       // Метод останавливает все процессы видеомагнитофона
 {
    play = false;
    rec = false;
    rew = 0;
    }

 void magnitofon::m_play()       // Метод включает воспроизведение кассеты
 {
    m_stop();        // Может быть активен только один процесс, поэтому вызывается метод "Stop"
    play = true;
       }

 void magnitofon::m_rew(int interval)  // Метод перематывает кассету в заданном направление
 {
    m_stop();
    rew = interval;          // Перемотка на заданный интервал
   }

 void magnitofon::m_rec()        // Метод начинает запись
 {
    if (play) rec = true;  // Запись возможна только при включённом процессе play
     }

 void magnitofon::insert(int id)              // Метод вставляет кассету
{
    m_stop();
    kasset = true;
   }

 void magnitofon::get()                // Метод достаёт кассету      
{
    m_stop();
    kaseta = false;
    }

 bool magnitofon::check()            // Метод проверяет, есть ли кассета
 {
    return kasset;      // Возвращает true, если кассета есть, в противном случае false.
 }

}; 

main.cpp
Код

#include "magnitofon.h"

int main()
{
magnitofon m;
int x;
cout<<"----------Menu----------"<<endl;
cout<<"0. воспроизведение"<<endl;
cout<<"1. вставить кассету"<<endl;
cout<<"2.  извлечь кассету'"<<endl;
cout<<"3. проверить наличие кассеты"<<endl;
cout<<"4. запись"<<endl;
cout<<"5. перемотать на указанный интервал"<<endl;
cout<<"6. стоп"<<endl;
while (true)
{
   cin>>x;
   switch(x)
   { 
      case 0:
         m.play();
         break;
      case 1:
         m.insert();
         break; 
      case 2:
         m.get();
         break;
      case 3:
         if (m.check)
         { cout<<"Кассета есть"<<endl; }
         else
         { cout<<"Кассеты нет"<<endl; }
         break;
      case 4:
         m.m_rec();
         break;
      case 5:
         cout<<"Интервал: ";
         cin>>x;
         m.m_rew(x);
         break;
      case 6:
         m.stop();
         break;
   }

никак не получается это сделать
выходит только что-то вроде этого:
magnitofon.h
Код

..............................
magnitofon();
    magnitofon(unsigned a,unsigned b);
    magnitofon(const controller&original);
   friend std::istream & operator >> (std::istream&is,magnitofon & count);
    friend std::ostream& operator<<(std::ostream& os,const magnitofon & count);
    bool   ??
    inline ??
};


inline unsigned magnitofon::full()const{
    ???
}

magnitofon.cpp
Код

magnitofon::magnitofon(const magnitofon& orig):??
{}



Это сообщение отредактировал(а) elenSV - 11.6.2009, 13:17
PM MAIL   Вверх
elenSV
Дата 11.6.2009, 13:22 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 26.4.2009

Репутация: -1
Всего: -1



помогите кто чем может smile 
PM MAIL   Вверх
azesmcar
Дата 11.6.2009, 14:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 52
Всего: 211



Цитата(elenSV @  11.6.2009,  13:22 Найти цитируемый пост)
помогите кто чем может smile  

Вы уже пятую тему не можете обяснить что конкретно нужно. Тут вы задали вопрос, я на него ответил..вы как либо прокомментировали мой ответ и замечания? нет, вы явились через неделю и задаете какой-то другой вопрос похожий на старый. Никто тут толком не понимает что вам надо и чего вы хотите. Так с чего же вам помогать? Я на протяжении всего этого времени вижу периодически ваши посты непонятного содержания. В них всегда один и тот же код и нет вопроса. 
Цитата(elenSV @  8.6.2009,  23:08 Найти цитируемый пост)
никак не получается это сделать
выходит только что-то вроде этого:

что никак не получается сделать? Вы хоть сами понимаете чего хотите?
PM   Вверх
zim22
Дата 11.6.2009, 14:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 29
Всего: 69



azesmcar, я думаю elenSV это новый, экспериментальный вид спам-бота.


--------------------
PM MAIL   Вверх
azesmcar
Дата 11.6.2009, 14:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 52
Всего: 211



Цитата(zim22 @  11.6.2009,  14:09 Найти цитируемый пост)
azesmcar, я думаю elenSV это новый, экспериментальный вид спам-бота. 

 smile настараживает слово "эксперементальный". И на ком же эксперементы проводят?
PM   Вверх
zim22
Дата 11.6.2009, 14:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 29
Всего: 69



Цитата(azesmcar @  11.6.2009,  14:11 Найти цитируемый пост)
И на ком же эксперементы проводят?

догадайтесь  smile 


--------------------
PM MAIL   Вверх
azesmcar
Дата 11.6.2009, 14:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 52
Всего: 211



Цитата(zim22 @  11.6.2009,  14:12 Найти цитируемый пост)
догадайтесь  smile  

Даже пытаться не хочу..боюсь угадать smile 
PM   Вверх
elenSV
Дата 11.6.2009, 14:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 26.4.2009

Репутация: -1
Всего: -1



мне надо объявить копирующий конструктор, перегруженный оператор присваивания, inline и const в объявлениях методов и операторов
и манипулятор ввода и вывода в виде дружественных функций
а что не понятного то?
PM MAIL   Вверх
zim22
Дата 11.6.2009, 14:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 29
Всего: 69



Цитата(elenSV @  11.6.2009,  14:19 Найти цитируемый пост)
мне надо объявить

они у вас уже объявлены  smile 
можете помечать тему решённой!  smile 


--------------------
PM MAIL   Вверх
elenSV
Дата 11.6.2009, 14:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 26.4.2009

Репутация: -1
Всего: -1



копирующий конструктор, перегруженный оператор присваивания, inline и const в объявлениях методов и операторов
и манипулятор ввода и вывода в виде дружественных функций
неужели никто по теме написать ничего не может  smile 
PM MAIL   Вверх
azesmcar
Дата 11.6.2009, 14:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 52
Всего: 211



elenSV

Про копи-конструкторы я тут писал
http://forum.vingrad.ru/forum/topic-262056...y1887548/0.html
оператор присваивания
Код

magnitofon& magnitofon::operator = (const magnitofon& r) {
  ...
}

но они вам не нужны. они автоматически генерируются.

Добавлено через 1 минуту и 3 секунды
Цитата(elenSV @  11.6.2009,  14:26 Найти цитируемый пост)
неужели никто по теме написать ничего не может  smile  


zim22
уже написал
Цитата(zim22 @  11.6.2009,  14:22 Найти цитируемый пост)
они у вас уже объявлены  smile 


PM   Вверх
elenSV
  Дата 11.6.2009, 14:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 26.4.2009

Репутация: -1
Всего: -1



вот скажем  копирующий конструктор, перегруженный оператор присваивания, inline и const в объявлениях методов и операторов, манипулятор ввода и вывода в виде дружественных функций для контроллера
как мне записать это в случае с моим классом
ну пожалуйста  smile 
Код

//contr.h
#ifndef CONTR_H_INCLUDED
#define CONTR_H_INCLUDED
#include<iostream>
class controller{
    private:
    unsigned  valuetrashcam;
    unsigned valuetrashcont;
    unsigned maxvaluecam;
    unsigned maxvaluecont;
    public:
    controller();
    controller(unsigned a,unsigned b);
    controller(const controller&original);
   friend std::istream & operator >> (std::istream&is,controller & count);
    friend std::ostream& operator<<(std::ostream& os,const controller & count);
    bool insert(unsigned  size);
    bool move();
    inline unsigned full()const;
    inline void clean();
};


inline unsigned controller::full()const{
    unsigned result=100*valuetrashcont/maxvaluecont;
    return result;
    }
inline void controller::clean(){
    valuetrashcont=0;
    return;
}
#endif // CONTR_H_INCLUDED
//contr.cpp
#include <iostream>
#include "contr.h"
using namespace std;

controller::controller():valuetrashcam(0),valuetrashcont(0),maxvaluecam(0),maxvaluecont(0)
{}
controller::controller(unsigned a,unsigned b):
valuetrashcam(0),valuetrashcont(0),maxvaluecam(a),maxvaluecont(b){}

controller::controller(const controller& orig):valuetrashcam(orig.valuetrashcam),
valuetrashcont(orig.valuetrashcont),maxvaluecam(orig.maxvaluecam),maxvaluecont(orig.maxvaluecont)
{}

std::ostream & operator<<(std::ostream& os,const controller & count){
    os<<count.valuetrashcam<<" "<<count.valuetrashcont<<" "
    <<count.maxvaluecam<<" "<<count.maxvaluecont<<std::endl;
    return os;
}

std::istream & operator >> (std::istream& is,controller & count)
    {
        is>>count.valuetrashcam>>count.valuetrashcont;
    return is;
    }


bool controller::insert(unsigned  size){
    if(maxvaluecam!=0&&maxvaluecont!=0&&size<=maxvaluecam&&valuetrashcam<=maxvaluecam)
    {   if(valuetrashcam==0)
        {
            valuetrashcam+=size;
        return true;
        }
        else {
            bool success=move();
            if(!success){return false;}
        valuetrashcam=size;
        return true;
              }
                  }
    else return false;
}
bool controller::move(){
    if(maxvaluecam!=0&&maxvaluecont!=0&&valuetrashcam!=0&&maxvaluecont>=(valuetrashcont+valuetrashcam))
    {
    valuetrashcont+=valuetrashcam;
    valuetrashcam=0;
    return true;
    }
    else return false;
}


PM MAIL   Вверх
azesmcar
Дата 11.6.2009, 14:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 52
Всего: 211



Цитата(elenSV @  11.6.2009,  14:43 Найти цитируемый пост)
вот скажем  копирующий конструктор, перегруженный оператор присваивания, inline и const в объявлениях методов и операторов, манипулятор ввода и вывода в виде дружественных функций для контроллера
как мне записать это в случае с моим классом
ну пожалуйста  smile 

А ведь и вправду похоже на спам бот.
1. Это абсолютно другой код, сейчас какой-то контроллер, до этого был магнитофон.
2. Уже три раза сказано что копирующий конструктор и оператор присваивания АВТОМАТИЧЕСКИ ГЕНЕРИРУЕТСЯ, вам его писать НЕ НАДО.

Цитата(elenSV @  11.6.2009,  14:43 Найти цитируемый пост)
манипулятор ввода и вывода в виде дружественных функций для контроллера

вон они, написаны.

Цитата(elenSV @  11.6.2009,  14:43 Найти цитируемый пост)
inline и const в объявлениях методов и операторов

Цитата

inline unsigned full()const;

вот инлайн и конст..чего вам надо вообще?
PM   Вверх
mes
Дата 11.6.2009, 14:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



Цитата(azesmcar @  11.6.2009,  13:47 Найти цитируемый пост)
2. Уже три раза сказано что копирующий конструктор и оператор присваивания АВТОМАТИЧЕСКИ ГЕНЕРИРУЕТСЯ, вам его писать НЕ НАДО.

а если в задании стоит, что надо обязательно определить ?
 smile 



--------------------
PM MAIL WWW   Вверх
azesmcar
Дата 11.6.2009, 15:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 52
Всего: 211



Цитата(mes @  11.6.2009,  14:59 Найти цитируемый пост)
а если в задании стоит, что надо обязательно определить ?

Для этого существует русский и могучий на котором можно обяснить а не писать в каждом посте тоже самое smile 
Но даже на этот случай я ответил

Цитата(azesmcar @  11.6.2009,  14:32 Найти цитируемый пост)
magnitofon& magnitofon::operator = (const magnitofon& r) {
  ...
}


Цитата(azesmcar @  11.6.2009,  14:32 Найти цитируемый пост)
Про копи-конструкторы я тут писал
http://forum.vingrad.ru/forum/topic-262056...y1887548/0.html
оператор присваивания

но эти строки как впрочем и все остальные остались без комментариев. smile 
PM   Вверх
zim22
Дата 11.6.2009, 15:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 29
Всего: 69



Цитата(azesmcar @  11.6.2009,  14:47 Найти цитируемый пост)
А ведь и вправду похоже на спам бот.

ну, я ж говорил  smile 


--------------------
PM MAIL   Вверх
elenSV
Дата 11.6.2009, 15:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 26.4.2009

Репутация: -1
Всего: -1



это задача контроллер контейнера с таким же заданием
inline unsigned full()const; - как я поняла здесь больше ничего не надо?
но надо записать копирующий конструктор- я не понимаю, что значит " вам его писать НЕ НАДО." - если препод мне говорит, что бы я обязательно записала его
вон они, написаны - а для моего случая эт как?
а здесь http://forum.vingrad.ru/forum/topic-262056...y1887548/0.html я ничего не нашла
ну сколько можно надо мной издеваться?!

Это сообщение отредактировал(а) elenSV - 11.6.2009, 15:12
PM MAIL   Вверх
azesmcar
Дата 11.6.2009, 15:20 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 52
Всего: 211



Цитата(elenSV @  11.6.2009,  15:09 Найти цитируемый пост)
это задача контроллер контейнера с таким же заданием
inline unsigned full()const; - как я поняла здесь больше ничего не надо?

Для чего? Смотря чего надо достичь.

Цитата(elenSV @  11.6.2009,  15:09 Найти цитируемый пост)
но надо записать копирующий конструктор- я не понимаю, что значит " вам его писать НЕ НАДО." - если препод мне говорит, что бы я обязательно записала его

Это значит что компилятор напишет его за вас. Если препод требует, я привел вам код оператора присваивания и копирующего конструктора. 
Цитата(elenSV @  11.6.2009,  15:09 Найти цитируемый пост)
а здесь http://forum.vingrad.ru/forum/topic-262056...y1887548/0.html я ничего не нашла

Я тоже там ничего не нашел. Но если это о моей ссылке, я присылал другую. Ее не надо копировать, просто нажать на нее.
или вотСЮДА

Цитата(elenSV @  11.6.2009,  15:09 Найти цитируемый пост)
ну сколько можно надо мной издеваться?!

никто не издевается, наоборот..такое ощущение что вы издеваетесь. Вы просто читайте то что вам пишут и если ответ не подходит не надо задавать вопрос снова, просто скажите чем он вам не подходит. И тогда все будет в порядке smile 

Это сообщение отредактировал(а) azesmcar - 11.6.2009, 15:22
PM   Вверх
elenSV
  Дата 11.6.2009, 16:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 26.4.2009

Репутация: -1
Всего: -1



копирующий конструктор :
в h
magnitofon(const magnitofon&orig);
в cpp 
magnitofon::magnitofon(const magnitofon& orig):m_stop(orig.m_stop),m_play(orig.m_play),m_rew(orig.m_rew),m_rec(orig.m_rec),
insert(orig.insert),get(orig.get),check(orig.check)
{}
должно получиться что то вроде этого?
манипулятор ввода и вывода в виде дружественных функций
в h
 friend std::istream & operator >> (std::istream&is,magnitofon & count);
 friend std::ostream& operator<<(std::ostream& os,const magnitofon & count);
в cpp - ничего не надо?
а что делать с перегруженным  оператором присваивания ?
 smile 
PM MAIL   Вверх
azesmcar
Дата 11.6.2009, 16:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 52
Всего: 211



Цитата(elenSV @  11.6.2009,  16:00 Найти цитируемый пост)
magnitofon::magnitofon(const magnitofon& orig):m_stop(orig.m_stop),m_play(orig.m_play),m_rew(orig.m_rew),m_rec(orig.m_rec),

насчет этого, инициализировать желательно в том порядке, в котором переменные были обявлены.
т.е.
play, stop, rec, rew

Цитата

insert(orig.insert),get(orig.get),check(orig.check)

это что? копирование функций?? smile такого не бывает. копируют только нестатические переменные члены.
т.е. примерно это, может что-то упустил, проверьте
Код

magnitofon::magnitofon(const magnitofon& orig):m_play(orig.m_play),m_stop(orig.m_stop),m_rec(orig.m_rec),m_rew(orig.m_rew)
{
}


Цитата(elenSV @  11.6.2009,  16:00 Найти цитируемый пост)
в cpp - ничего не надо?

надо, написать тело этих функций.
Код

std::istream & operator >> (std::istream&is,magnitofon & count)
{
}
std::ostream& operator<<(std::ostream& os,const magnitofon & count)
{
}


Цитата(elenSV @  11.6.2009,  16:00 Найти цитируемый пост)
а что делать с перегруженным  оператором присваивания ?

напиать так как я показал. 
Код

magnitofon& magnitofon::operator = (const magnitofon& orig)
{
   m_play = orig.m_play;
   m_stop = orig.m_stop;
   m_rec = orig.m_rec;
   m_rew = orig.m_rew;
   return *this;
}

PM   Вверх
elenSV
  Дата 11.6.2009, 19:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 26.4.2009

Репутация: -1
Всего: -1



у меня получилось что то вроде этого
но чуствую многовато косяков - проверьте
magnitofon.h
Код

#ifndef MAGNITOFON_H
#define MAGNITOFON_H
#include <iostream>
#include <string>
#include <vector>
#include <clocale>
using namespace std;
class magnitofon
{
 private: 
      bool play, stop, rec, kasset, kaseta;        // Процессы: воспроизведение, запись и наличие кассеты
   int rew;                // Процесс перемотки (положительное число - вперёд на заданный интервал, 
public:
   magnitofon();           // Конструктор    
   ~magnitofon(); //деконструктор 
   void m_stop();       // Метод останавливает все процессы видеомагнитофона
   void m_play();       // Метод включает воспроизведение кассеты
   void m_rew(int interval);  // Метод перематывает кассету в заданном направление
   void m_rec();        // Метод начинает запись
   void insert();              // Метод вставляет кассету
   void get();               // Метод достаёт кассету      
   bool check();            // Метод проверяет, есть ли кассета
   magnitofon(const magnitofon&orig);
   };
   friend std::istream & operator >> (std::istream&is,magnitofon & count);
   friend std::ostream& operator<<(std::ostream& os,const magnitofon & count);
   magnitofon& magnitofon::operator = (const magnitofon& orig)
{
   m_play = orig.m_play;
   m_stop = orig.m_stop;
   m_rec = orig.m_rec;
   m_rew = orig.m_rew;
   return *this;
}
inline unsigned full()const;
}
#endif // MAGNITOFON_H

magnitofon.cpp
Код

magnitofon::magnitofon()           // Конструктор
 {
    play = false;
    stop = false;       // По-умолчанию все процессы выключены
    rec = false;
    rew = 0;
    kasset = false;    // По-умолчванию кассеты нет
   }
magnitofon::~magnitofon()           // деконструктор
{
} 
 void magnitofon::m_stop()       // Метод останавливает все процессы видеомагнитофона
 {
    play = false;
    rec = false;
    rew = 0;
    }

 void magnitofon::m_play()       // Метод включает воспроизведение кассеты
 {
    m_stop();        // Может быть активен только один процесс, поэтому вызывается метод "Stop"
    play = true;
       }

 void magnitofon::m_rew(int interval)  // Метод перематывает кассету в заданном направление
 {
    m_stop();
    rew = interval;          // Перемотка на заданный интервал
   }

 void magnitofon::m_rec()        // Метод начинает запись
 {
    if (play) rec = true;  // Запись возможна только при включённом процессе play
     }

 void magnitofon::insert(int id)              // Метод вставляет кассету
{
    m_stop();
    kasset = true;
   }

 void magnitofon::get()                // Метод достаёт кассету      
{
    m_stop();
    kaseta = false;
    }

 bool magnitofon::check()            // Метод проверяет, есть ли кассета
 {
    return kasset;      // Возвращает true, если кассета есть, в противном случае false.
 }
magnitofon::magnitofon(const magnitofon& orig):m_play(orig.m_play),m_stop(orig.m_stop),m_rec(orig.m_rec),m_rew(orig.m_rew)
{
} //копирующий конструктор
std::istream & operator >> (std::istream&is,magnitofon & count)
{
}
std::ostream& operator<<(std::ostream& os,const magnitofon & count)
{ //манипулятор ввода и вывода в виде дружественных функций
}
};

А что делается в этой строчке   return *this;
и не очень понятно зачем используются inline и const
PM MAIL   Вверх
andrew_121
Дата 11.6.2009, 19:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 10
Всего: 33



Цитата(elenSV @  11.6.2009,  19:00 Найти цитируемый пост)
 ~magnitofon(); //деконструктор 

деструктор



Цитата(elenSV @  11.6.2009,  19:00 Найти цитируемый пост)
magnitofon(const magnitofon&orig);

Перемести к конструкторам.



Цитата(elenSV @  11.6.2009,  19:00 Найти цитируемый пост)
   magnitofon& magnitofon::operator = (const magnitofon& orig)
{
   m_play = orig.m_play;
   m_stop = orig.m_stop;
   m_rec = orig.m_rec;
   m_rew = orig.m_rew;
   return *this;
}

Перемести в .срр файл.



Цитата(elenSV @  11.6.2009,  19:00 Найти цитируемый пост)
 void magnitofon::m_rew(int interval)  // Метод перематывает кассету в заданном направление

Что задает направление? Я вижу только интервал.



Цитата(elenSV @  11.6.2009,  19:00 Найти цитируемый пост)
void magnitofon::insert(int id)              // Метод вставляет кассету

Для чего в агументе id ?



Цитата(elenSV @  11.6.2009,  19:00 Найти цитируемый пост)
void magnitofon::get()                // Метод достаёт кассету

Я так понял, метод извлекает кассету? Тогда правильней назвать eject()



Цитата(elenSV @  11.6.2009,  19:00 Найти цитируемый пост)
А что делается в этой строчке   return *this;

Возвращает присвоенный объект.



Цитата(elenSV @  11.6.2009,  19:00 Найти цитируемый пост)
и не очень понятно зачем используются inline и const 

А я не вижу реализацию. Только декларация.


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
elenSV
  Дата 11.6.2009, 19:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 26.4.2009

Репутация: -1
Всего: -1



а реализация как то так будет:
Код

inline void magnitofon::play(){
    return;
    }
  хотя я не оч понимаю зачем это

а перемотку в разные стороны можно осуществить так, что бы пользователь вводил отриц число(перемотка назад)?
 smile 
PM MAIL   Вверх
andrew_121
Дата 11.6.2009, 19:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 10
Всего: 33



Цитата(elenSV @  11.6.2009,  19:46 Найти цитируемый пост)
а реализация как то так будет:

 smile 
inline можешь убрать. Нет в нем смысла.
Цитата(elenSV @  11.6.2009,  19:46 Найти цитируемый пост)
а перемотку в разные стороны можно осуществить так, что бы пользователь вводил отриц число(перемотка назад)?

Да, конечно.


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
elenSV
  Дата 11.6.2009, 20:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 26.4.2009

Репутация: -1
Всего: -1



"inline можешь убрать. Нет в нем смысла."
я понимаю что inline уже устарел
но мне его надо написать для понимания - которого в принципе нет
он вообще зачем?
а записано верно?
а для rec, rew, stop примерно так же будет? 
 smile 
PM MAIL   Вверх
andrew_121
Дата 11.6.2009, 20:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 10
Всего: 33



Цитата(elenSV @  11.6.2009,  20:00 Найти цитируемый пост)
но мне его надо написать для понимания - которого в принципе нет

Для понимания чего? Смысла в нем, в твоем случае нет!



Цитата(elenSV @  11.6.2009,  20:00 Найти цитируемый пост)
он вообще зачем?

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


Цитата(elenSV @  11.6.2009,  20:00 Найти цитируемый пост)
а записано верно?

Да.



Цитата(elenSV @  11.6.2009,  20:00 Найти цитируемый пост)
а для rec, rew, stop примерно так же будет? 

Ага.


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
azesmcar
Дата 11.6.2009, 20:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 52
Всего: 211



Цитата(elenSV @  11.6.2009,  20:00 Найти цитируемый пост)
я понимаю что inline уже устарел

 smile даа??? хм. Кто это сказал?

Цитата(elenSV @  11.6.2009,  20:00 Найти цитируемый пост)
но мне его надо написать для понимания - которого в принципе нет
он вообще зачем?
а записано верно?
а для rec, rew, stop примерно так же будет? 

Инлайн функция - другими словами встраиваемая отличается от обычной тем, что она не вызывается каждый раз, а ее код копируется в те места, где ее вызывали, как следствие - программа работает чуть быстрее (не теряет время на вызовы). 
PM   Вверх
elenSV
  Дата 12.6.2009, 07:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 26.4.2009

Репутация: -1
Всего: -1



А вот что надо здесь сделать 
иерархия классов и динамический полиморфизм
разработать програмную модель для заданной преподователем иерархии понятий
в программе должны быть задействованы все разработанные классы и продеманстрировано использование динамического полиморфизма

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

вот допустим класс без последних (в принципе нужных изменений) - сохраняющий действия пользователя в список
как выполнить задание - вообще не понимаю
Код
#ifndef MAGNITOFON_H
#define MAGNITOFON_H
class magnitofon
{
private:
   bool play, stop, rec, kasset, kaseta;        // Процессы: воспроизведение, запись и наличие кассеты
   int rew;                // Процесс перемотки (положительное число - вперёд на заданный интервал, 
       vector<string>  ListDat;                // Запоминает все действия                      // отрицательное число - назад на заданный интервал, 0 - бездействие)
public:
   magnitofon();              // Конструктор   
   ~magnitofon(); //деконструктор  
   void m_stop();       // Метод останавливает все процессы видеомагнитофона
   void m_play();       // Метод включает воспроизведение кассеты
   void m_rew(int interval);  // Метод перематывает кассету в заданном направление
   void m_rec();        // Метод начинает запись
   void insert();              // Метод вставляет кассету
   void get();               // Метод достаёт кассету      
   bool check();            // Метод проверяет, есть ли кассета
};
#endif // MAGNITOFON_H

magnitofon.cpp
Код
magnitofon::magnitofon()           // Конструктор
 {
    play = false;
    stop = false;       // По-умолчанию все процессы выключены
    rec = false;
    rew = 0;
    kasset = false;    // По-умолчванию кассеты нет
 }
magnitofon::~magnitofon()           // деконструктор
{
} 
 void m_stop()                                   // Метод останавливает все процессы видеомагнитофона
        {
                play = false;
                rec = false;
                rew = 0;
                ListDat.push_back("m_stop");
        }
 
        void m_play()                                   // Метод включает воспроизведение кассеты
        {
                m_stop();                                       // Может быть активен только один процесс, поэтому вызывается метод "Stop"
                play = true;
                ListDat.push_back("m_play");
        }
 
        void m_rew(int interval)                // Метод перематывает кассету в заданном направление
        {
                m_stop();
                rew = interval;                         // Перемотка на заданный интервал
                ListDat.push_back("m_rew");
        }
 
        void m_rec()                                    // Метод начинает запись
        {
                if (play) rec = true;           // Запись возможна только при включённом процессе play
                ListDat.push_back("m_rec");
        }
 
        void insert()                                   // Метод вставляет кассету
        {
                m_stop();
                kasset = true;
                ListDat.push_back("insert");
        }
 
        void get()                                              // Метод достаёт кассету      
        {
                m_stop();
                kasset = false;
                ListDat.push_back("get");
        }
 
        bool check()                                    // Метод проверяет, есть ли кассета
        {
                return kasset;                          // Возвращает true, если кассета есть, в противном случае false.
        }
 
        void outListDat()
        {
                vector<string>::iterator it;
                for(it = ListDat.begin(); it != ListDat.end(); ++it)
                        cout<<*it<<endl;
        }
};

main.cpp
Код
int main()
{
magnitofon m;
int x;
cout<<"----------Menu----------"<<endl;
cout<<"1. вставить кассету"<<endl;
cout<<"2.  извлечь кассету'"<<endl;
cout<<"3. проверить наличие кассеты"<<endl;
cout<<"4. запись"<<endl;
cout<<"5. перемотать на указанный интервал"<<endl;
cout<<"6. стоп"<<endl;
cout<<"7. воспроизведение"<<endl;
while (true)
{
   cin>>x;
   switch(x)
   {
      case 1:
         cout<<"Номер кассеты: ";
         cin>>x;
         m.insert(x);
         break;
      case 2:
         m.get();
         break;
      case 3:
         if (m.check)
         { cout<<"Кассета есть"<<endl; }
         else
         { cout<<"Кассеты нет"<<endl; }
         break;
      case 4:
         m.m_rec();
         break;
      case 5:
         cout<<"Интервал: ";
         cin>>x;
         m.m_rew(x);
         break;
      case 6:
         m.stop();
         break;
   }
      case 7:
         m.play();
         break;
   }
 magnitofon mag;
        mag.insert();
        mag.m_play();
        mag.m_rec();
        mag.m_rew(1);
        mag.m_stop();
        mag.get();
 
        mag.outListDat();
 
        system("pause");
}
return 0;
}

только могу сразу сказать - ногами бить себя не позволю  smile 

Это сообщение отредактировал(а) elenSV - 12.6.2009, 07:51
PM MAIL   Вверх
andrew_121
Дата 12.6.2009, 10:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 10
Всего: 33



Цитата(elenSV @  12.6.2009,  07:50 Найти цитируемый пост)
иерархия классов и динамический полиморфизм

Ни первым,  ни вторым, тут и не пахнет.
 smile 


Цитата(elenSV @  12.6.2009,  07:50 Найти цитируемый пост)
только могу сразу сказать - ногами бить себя не позволю

Хорошо что предупредила smile 


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
elenSV
  Дата 12.6.2009, 12:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 26.4.2009

Репутация: -1
Всего: -1



а что значит не пахнет
мне препод сказал что надо создать от этого класса производный класс, который запоминает все действия
и создать иерархию классов
вот скажем объявляю главный класс 
а как его связать со вторым?
у меня вообще нет четкого представления как это сделать
Код


class handmagnitofon:public magnitofon{
    public:
    handmagnitofon();
  void m_stop();       // Метод останавливает все процессы видеомагнитофона
   void m_play();       // Метод включает воспроизведение кассеты
   void m_rew(int interval);  // Метод перематывает кассету в заданном направление
   void m_rec();        // Метод начинает запись
   void insert();              // Метод вставляет кассету
   void get();               // Метод достаёт кассету      
   bool check();            // Метод проверяет, есть ли кассета
~handmagnitofon();
};

 smile 
PM MAIL   Вверх
andrew_121
Дата 12.6.2009, 13:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 10
Всего: 33



Цитата(elenSV @  12.6.2009,  12:56 Найти цитируемый пост)
мне препод сказал что надо создать от этого класса производный класс, который запоминает все действия и создать иерархию классов

Но я же этого не знал.

Цитата(elenSV @  12.6.2009,  12:56 Найти цитируемый пост)
у меня вообще нет четкого представления как это сделать

 smile Так программы не пишутся!


Я вот(пока ты отвечала) подумал что тебе нужно нечто вроди:
Код

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

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

class Magnitofon {
/* Ну и сам Магнитофон, который все перечисленым выше, управляет.
 */
};




--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
elenSV
Дата 12.6.2009, 13:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 26.4.2009

Репутация: -1
Всего: -1



то есть  Magnitofon является главным классом
Record записывает операции
а зачем Cassete?

а вот скажем если будет два класса handmagnitofon и magnitofon - записывающий в список
как будет осуществляться связь между ними
вот это сдезь надо?:
handmagnitofon::handmagnitofon():magnitofon()
{}
handmagnitofon::handmagnitofon(m_play)............

 
PM MAIL   Вверх
andrew_121
Дата 12.6.2009, 13:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 10
Всего: 33



Цитата(elenSV @  12.6.2009,  13:35 Найти цитируемый пост)
а зачем Cassete?

Ну...на сколько мне известно, на кассете может быть несколько записей. Т.е. Класс Cassete, содержит в себе массив записей, и операции для манипуляции с ними.
Цитата(elenSV @  12.6.2009,  13:35 Найти цитируемый пост)
вот это сдезь надо?:
handmagnitofon::handmagnitofon():magnitofon()
{}
handmagnitofon::handmagnitofon(m_play)............

 smile 


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
elenSV
  Дата 12.6.2009, 14:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 26.4.2009

Репутация: -1
Всего: -1



у меня кроме этого ничего не выходит
я вообще на измене
magnitofon.h
Код

#ifndef MAGNITOFON_H
#define MAGNITOFON_H
class magnitofon
{
private:
   bool play, stop, rec, kasset, kaseta;        // Процессы: воспроизведение, запись и наличие кассеты
   int rew;                // Процесс перемотки (положительное число - вперёд на заданный интервал, 
   public:
   magnitofon();              // Конструктор   
   ~magnitofon(); //деконструктор  
   void m_stop();       // Метод останавливает все процессы видеомагнитофона
   void m_play();       // Метод включает воспроизведение кассеты
   void m_rew(int interval);  // Метод перематывает кассету в заданном направление
   void m_rec();        // Метод начинает запись
   void insert();              // Метод вставляет кассету
   void get();               // Метод достаёт кассету      
   bool check();            // Метод проверяет, есть ли кассета
};
#endif //  MAGNITOFON_H_INCLUDED
#ifndef HAND_H_INCLUDED
#define HAND_H_INCLUŜDED
//#include "magnitofon.h"
class handmagnitofon:public magnitofon{
    public:
    handmagnitofon();
  void m_stop();       // Метод останавливает все процессы видеомагнитофона
   void m_play();       // Метод включает воспроизведение кассеты
   void m_rew(int interval);  // Метод перематывает кассету в заданном направление
   void m_rec();        // Метод начинает запись
   void insert();              // Метод вставляет кассету
   void get();               // Метод достаёт кассету      
   bool check();            // Метод проверяет, есть ли кассета
~handmagnitofon();
};

magnitofon.cpp
Код

#include <iostream>
#include "magnitofon.h"
using namespace std;

magnitofon::magnitofon()           // Конструктор
 {
    play = false;
    stop = false;       // По-умолчанию все процессы выключены
    rec = false;
    rew = 0;
    kasset = false;    // По-умолчванию кассеты нет
 }
magnitofon::~magnitofon()           // деконструктор
{
} 
 void m_stop()                                   // Метод останавливает все процессы видеомагнитофона
        {
                play = false;
                rec = false;
                rew = 0;
                        }
 
        void m_play()                                   // Метод включает воспроизведение кассеты
        {
                m_stop();                                       // Может быть активен только один процесс, поэтому вызывается метод "Stop"
                play = true;
                        }
 
        void m_rew(int interval)                // Метод перематывает кассету в заданном направление
        {
                m_stop();
                rew = interval;                         // Перемотка на заданный интервал
                       }
 
        void m_rec()                                    // Метод начинает запись
        {
                if (play) rec = true;           // Запись возможна только при включённом процессе play
               
        }
 
        void insert()                                   // Метод вставляет кассету
        {
                m_stop();
                kasset = true;
                
        }
 
        void eject()                                              // Метод достаёт кассету      
        {
                m_stop();
                kasset = false;
             
        }
 
        bool check()                                    // Метод проверяет, есть ли кассета
        {
                return kasset;                          // Возвращает true, если кассета есть, в противном случае false.
        }
 
       
//#include "hand.h"
#include <iostream>
handmagnitofon::handmagnitofon():magnitofon()
{}
handmagnitofon::handmagnitofon(m_play)::magnitofon(m_play)
handmagnitofon::handmagnitofon(m_stop)::magnitofon(m_stop)
handmagnitofon::handmagnitofon(m_rec)::magnitofon(m_rec)....
...........
 void outListDat()
        {
                vector<string>::iterator it;
                for(it = ListDat.begin(); it != ListDat.end(); ++it)
                        cout<<*it<<endl;
        }
};

и где записать ListDat.push_back("m_stop"); и т.д.
PM MAIL   Вверх
andrew_121
Дата 12.6.2009, 15:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 10
Всего: 33



elenSV, Это я уже видел. Начни с утверждения синтаксиса хранения записей/кассет.
Реализуй чтение/запись кассет.


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
elenSV
Дата 12.6.2009, 16:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 26.4.2009

Репутация: -1
Всего: -1



а почему чтение/запись кассет нельзя через  ListDat.push_back("m_stop");  ListDat.push_back("m_play"); и т.д. реализовать?
для этого надо отдельный класс?
что надо записывать в этих классах?
class Record 
class Cassete 
class Magnitofon 
PM MAIL   Вверх
andrew_121
Дата 12.6.2009, 16:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 10
Всего: 33



Цитата(elenSV @  12.6.2009,  16:44 Найти цитируемый пост)
а почему чтение/запись кассет нельзя через  ListDat.push_back("m_stop");  ListDat.push_back("m_play"); и т.д. реализовать?

Кассета содержит записи. Запись содержит слова. Как ты это через аргумент передавать будешь?



Цитата(elenSV @  12.6.2009,  16:44 Найти цитируемый пост)
для этого надо отдельный класс?
что надо записывать в этих классах?

Вот набросал. Не проверял.
Код


#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;
}

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



Добавлено через 2 минуты и 42 секунды
Вот пример файла записей.
первая цифра - номер кассеты. Вторая - номер записи.
Объект еще сырой. Доделаю.

Присоединённый файл ( Кол-во скачиваний: 10 )
Присоединённый файл  records.txt 0,36 Kb


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
zim22
Дата 12.6.2009, 17:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 29
Всего: 69



Цитата(elenSV @  12.6.2009,  12:56 Найти цитируемый пост)
у меня вообще нет четкого представления как это сделать

вы пробовали читать учебник по С++? 


--------------------
PM MAIL   Вверх
andrew_121
Дата 12.6.2009, 17:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 10
Всего: 33



zim22, Я так думаю что тот код что она привела, написан ею. Ну это уже что-то. Но то что в соседнем топике про калькулятор smile



--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
elenSV
Дата 12.6.2009, 17:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 26.4.2009

Репутация: -1
Всего: -1



andrew_121, ты не мог бы объяснить как это работает 
А в классе Cassete какие операции надо реализовать?

PM MAIL   Вверх
andrew_121
Дата 13.6.2009, 11:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 10
Всего: 33



Код


#include <iostream>
#include <fstream>
#include <sstream>
#include <string>
#include <vector>
#include <algorithm>

typedef std::string word;
/***************************************************************************/

class Record {
    /* Массив слов */
    std::vector<std::string> words;
public:
    /* Конструкторы */
    Record():words() {}
    Record(const std::string& b):words() { load(b); }
    /* Деструктор */
    ~Record() {}
    /* Загружает слова из строки */
    void load(const std::string& b) {
        std::istringstream buf(b);
        word word;

        while ( buf.rdbuf()->in_avail() ) {
            buf >> word;
            words.push_back(word);
        }
    }
    /* Сохраняет слова в строку */
    void save(std::string& b) {
        std::ostringstream buf;
        std::vector<std::string>::iterator it = words.begin();
        while ( it != words.end() ) {
            buf << *it << (it == words.end()) ? "" : " ";
            ++it;
        }
        b = buf.str();
    }
    /* Добавляет одно слово */
    void add(const word& w) {
        if ( w.empty() ) return;
        words.push_back(w);
    }
    /* Проверка на присутствие слова 'w' в массиве */
    bool contains(const word& w) const {
        return std::count(words.begin(), words.end(), w) > 0;
    }
};

/***************************************************************************/
/* Информация о записи */
struct RecordInfo {
    RecordInfo():cassete_num(0),record_num(0){}
    int cassete_num;
    int record_num;
};

/***************************************************************************/
/* Из строки прочитанной из файла записей, извлекает информацию о записи */
RecordInfo get_record_info( const std::string& s ) {
    RecordInfo recinfo;
    std::string casnum;
    std::string recnum;
    
    std::string::const_iterator it1 = std::find(s.begin(), s.end(), ':');
    casnum.resize(it1-s.begin());
    std::copy(s.begin(), it1, casnum.begin());
    
    it1++;
    std::string::const_iterator it2 = std::find(it1, s.end(), ':');
    recnum.resize(it2-it1);
    std::copy(it1, it2, recnum.begin());
    
    recinfo.cassete_num = atoi(casnum.c_str());
    recinfo.record_num = atoi(recnum.c_str());
    
    return recinfo;
}

/***************************************************************************/
/* Удаляет из строки информацию о записи */
std::string trim_info(const std::string& s) {
    std::string result;
    std::string::const_iterator it1 = std::find(s.begin(), s.end(), ':')+1;
    std::string::const_iterator it2 = std::find(it1, s.end(), ':')+1;
    result.resize(s.end()-it2);
    std::copy(it2, s.end(), result.begin());
    return result;
}

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

int main(int argc, char** argv) {
    RecordInfo recinfo;
    /* Открываем файл записей для чтения из него */
    std::fstream in("records.txt", std::ios::in);
    if ( !in ) {
        std::cout << "Can`t open records file. Terminate!\n";
        return 1;
    }
    /* Читаем построчно поку не конец файла */
    while ( !in.eof() ) {
        /* Временные объекты. (пока что...) */
        Record rec;
        std::string str;
        /* Читаем строку */
        std::getline(in, str);
        /* Извлекаем из нее информацию о записи */
        recinfo = get_record_info(str);
        /* Выводим информацию о записи. (для отладки...) */
        std::cout<< "Record info - cas:" << recinfo.cassete_num
                    << " rec:" << recinfo.record_num << std::endl;
        /* Удаляем из строки информацию о записи */
        str = trim_info(str);
        /* Загружаем запись в объект 'Record' */
        rec.load(str);
    }

    return 0;
}

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


Добавлено @ 11:05
Функции:
Код

RecordInfo get_record_info( const std::string& s );
std::string trim_info(const std::string& s);

Должны стать методами класса Magnitofon.

Это сообщение отредактировал(а) andrew_121 - 13.6.2009, 12:02


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
elenSV
  Дата 13.6.2009, 15:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 26.4.2009

Репутация: -1
Всего: -1



andrew_121, что то вроде этого не подойдёт:
Код

class Cassete
{
 private:
  int id;
  std::vector<Record> Records;
  std::vector<Record>::iterator pos;

 public:
  Cassete(int k) : id(k)
   { pos = Records.begin(); }
  void rew_begin(void)
   { pos = Records.begin(); }
  void add(const Record newrec)
   { Records.push_back(newrec); }
  int getId(void) { return id; }

};

 smile  smile 
PM MAIL   Вверх
elenSV
  Дата 13.6.2009, 18:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 26.4.2009

Репутация: -1
Всего: -1



вот так вот нельзя?:
magnitofon.h
Код

#ifndef MAGNITOFON_H
#define MAGNITOFON_H
class magnitofon
{
private:
   bool play, stop, rec, kasset, kaseta;        // Процессы: воспроизведение, запись и наличие кассеты
   int rew;                // Процесс перемотки (положительное число - вперёд на заданный интервал, 
   public:
   magnitofon();              // Конструктор   
   ~magnitofon(); //деконструктор  
   void m_stop();       // Метод останавливает все процессы видеомагнитофона
   void m_play();       // Метод включает воспроизведение кассеты
   void m_rew(int interval);  // Метод перематывает кассету в заданном направление
   void m_rec();        // Метод начинает запись
   void insert();              // Метод вставляет кассету
   void get();               // Метод достаёт кассету      
   bool check();            // Метод проверяет, есть ли кассета
};
#endif //  MAGNITOFON_H_INCLUDED
#ifndef HAND_H_INCLUDED
#define HAND_H_INCLUŜDED
//#include "magnitofon.h"
class handmagnitofon:public magnitofon{
    public:
    handmagnitofon();
  void m_stop();       // Метод останавливает все процессы видеомагнитофона
   void m_play();       // Метод включает воспроизведение кассеты
   void m_rew(int interval);  // Метод перематывает кассету в заданном направление
   void m_rec();        // Метод начинает запись
   void insert();              // Метод вставляет кассету
   void get();               // Метод достаёт кассету      
   bool check();            // Метод проверяет, есть ли кассета
~handmagnitofon();
};

magnitofon.cpp
Код

#include <iostream>
#include "magnitofon.h"
using namespace std;

magnitofon::magnitofon()           // Конструктор
 {
    play = false;
    stop = false;       // По-умолчанию все процессы выключены
    rec = false;
    rew = 0;
    kasset = false;    // По-умолчванию кассеты нет
 }
magnitofon::~magnitofon()           // деконструктор
{
} 
 void m_stop()                                   // Метод останавливает все процессы видеомагнитофона
        {
                play = false;
                rec = false;
                rew = 0;
                        }
 
        void m_play()                                   // Метод включает воспроизведение кассеты
        {
                m_stop();                                       // Может быть активен только один процесс, поэтому вызывается метод "Stop"
                play = true;
                        }
 
        void m_rew(int interval)                // Метод перематывает кассету в заданном направление
        {
                m_stop();
                rew = interval;                         // Перемотка на заданный интервал
                       }
 
        void m_rec()                                    // Метод начинает запись
        {
                if (play) rec = true;           // Запись возможна только при включённом процессе play
               
        }
 
        void insert()                                   // Метод вставляет кассету
        {
                m_stop();
                kasset = true;
                
        }
 
        void eject()                                              // Метод достаёт кассету      
        {
                m_stop();
                kasset = false;
             
        }
 
        bool check()                                    // Метод проверяет, есть ли кассета
        {
                return kasset;                          // Возвращает true, если кассета есть, в противном случае false.
        }
 
       
//#include "hand.h"
#include <iostream>
handmagnitofon::handmagnitofon():magnitofon()
{}
 vector<string>  ListDat;                // Запоминает все действия
handmagnitofon::handmagnitofon(m_play)::magnitofon(m_play)
 {ListDat.push_back("m_play");}
handmagnitofon::handmagnitofon(m_stop)::magnitofon(m_stop)
{ListDat.push_back("m_stop");}
handmagnitofon::handmagnitofon(m_rec)::magnitofon(m_rec)
{ListDat.push_back("m_rec");}
handmagnitofon::handmagnitofon(m_rew)::magnitofon(m_rew)
{ListDat.push_back("m_rew");}
handmagnitofon::handmagnitofon(insert)::magnitofon(insert)
{ListDat.push_back("insert");}

 void outListDat()
        {
                vector<string>::iterator it;
                for(it = ListDat.begin(); it != ListDat.end(); ++it)
                        cout<<*it<<endl;
        }
};

PM MAIL   Вверх
andrew_121
Дата 13.6.2009, 20:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 10
Всего: 33



Во первых. Нет виртуальных функций. Значит это не полиморфизм.
Во вторых. Нет двух объектов унаследованных от базового. Значит проверить полиморфизм не получится.

Это сообщение отредактировал(а) andrew_121 - 13.6.2009, 20:53


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
elenSV
Дата 13.6.2009, 20:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 26.4.2009

Репутация: -1
Всего: -1



h файл будет так?
Код

#ifndef MAGNITOFON_H
#define MAGNITOFON_H
class magnitofon
{
private:
   bool play, stop, rec, kasset, kaseta;        // Процессы: воспроизведение, запись и наличие кассеты
   int rew;                // Процесс перемотки (положительное число - вперёд на заданный интервал, 
   public:
   magnitofon();              // Конструктор   
   ~magnitofon(); //деконструктор  
   void m_stop();       // Метод останавливает все процессы видеомагнитофона
   void m_play();       // Метод включает воспроизведение кассеты
   void m_rew(int interval);  // Метод перематывает кассету в заданном направление
   void m_rec();        // Метод начинает запись
   void insert();              // Метод вставляет кассету
   void get();               // Метод достаёт кассету      
   bool check();            // Метод проверяет, есть ли кассета
};
#endif //  MAGNITOFON_H_INCLUDED
#ifndef HAND_H_INCLUDED
#define HAND_H_INCLUŜDED
//#include "magnitofon.h"
class handmagnitofon:public magnitofon{
    public:
    handmagnitofon();
 virtual void m_stop();       // Метод останавливает все процессы видеомагнитофона
  virtual void m_play();       // Метод включает воспроизведение кассеты
  virtual void m_rew(int interval);  // Метод перематывает кассету в заданном направление
  virtual void m_rec();        // Метод начинает запись
  virtual void insert();              // Метод вставляет кассету
   virtual void get();               // Метод достаёт кассету      
   virtual bool check();            // Метод проверяет, есть ли кассета
virtual~handmagnitofon();
};

PM MAIL   Вверх
andrew_121
Дата 13.6.2009, 21:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 10
Всего: 33



Виртуальные методы должны быть в базовом классе.


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
elenSV
  Дата 13.6.2009, 22:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 26.4.2009

Репутация: -1
Всего: -1



так ладно
А здесь вообще можно обойтись 2 классами?
как надо реализовывать запись во второй?
PM MAIL   Вверх
andrew_121
Дата 13.6.2009, 22:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 10
Всего: 33





--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.1655 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.