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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
LenaSV
0 / 0 / 0
Регистрация: 11.04.2009
Сообщений: 22
#1

класс для представления понятия "контроллер видеомагнитофона" - C++

11.06.2009, 14:10. Просмотров 693. Ответов 5
Метки нет (Все метки)

класс для представления понятия "контроллер видеомагнитофона"(обеспечивает програмное управление видеомагнитофоном, который может осуществлять запись,вставить, извлечь кассету и проверить наличие кассеты, выполнять воспроизведение кассеты и осуществлть перемотку в указанном направлении
как здесь объявить копирующий конструктор, перегруженный оператор присваивания, 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):??
{}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.06.2009, 14:10     класс для представления понятия "контроллер видеомагнитофона"
Посмотрите здесь:

C++ контроллер видеомагнитофона
C++ контроллер видеомагнитофона
контроллер видеомагнитофона C++
C++ Рекурсия: синтаксический анализатор понятия "список_параметров"
C++ Синтаксический анализатор понятия "скобки" (рекурсия)
C++ Ввести класс для работы с объектом "многочлен"
C++ Разработать класс для понятия "Генератор шума"
Разработать класс "Контролер видеомагнитофона" C++
C++ Ввести класс для работы с объектом "множество целых чисел"
Класс "Дробь" для обработки обычных дробей C++
Для чего используют класс "Стек"? C++
C++ Класс для работы с объектом "рациональная дробь"

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Шерсть-На-Носу
40 / 40 / 1
Регистрация: 30.01.2009
Сообщений: 168
11.06.2009, 18:59     класс для представления понятия "контроллер видеомагнитофона" #2
Не проверял, просто в качестве идеи:
Код
 
class magnitofon
{
   ...
public:
   // Конструктор копирования
   magnitofon(const magnitofon& another_magnitofon)
   {
      play = another_magnitofon.play;
      stop = another_magnitofon.stop;
      rec = another_magnitofon.rec;
      rew = another_magnitofon.rew;
      kasset = another_magnitofon.kasset;
   }
   // Оператор присваивания
   const magnitofon& operator=(const magnitofon& another_magnitofon)
   {
      play = another_magnitofon.play;
      stop = another_magnitofon.stop;
      rec = another_magnitofon.rec;
      rew = another_magnitofon.rew;
      kasset = another_magnitofon.kasset;
      return *this;
   }
   ...   
};
Добавлено через 3 минуты 57 секунд
Некоторые замечания:

"Деконструктор" правильно называется деструктор. И конструкторы и деструктор должны быть объявлены как public.

inline можно поставить в начале объявления любой функции - это команда компилятору вставить тело функции в код целиком (а не вызов из другого места).

Добавлено через 1 минуту 43 секунды
По поводу операторов >> и << - просто напиши вывод переменных твоего класса в поток.
Rififi
2336 / 1051 / 44
Регистрация: 03.05.2009
Сообщений: 2,656
11.06.2009, 19:12     класс для представления понятия "контроллер видеомагнитофона" #3
Да сколько же у тебя этих магнитофонов??? :eek:
Иногда магнитофон возвращается..., часть четвертая
:lol:
LenaSV
0 / 0 / 0
Регистрация: 11.04.2009
Сообщений: 22
11.06.2009, 19:46  [ТС]     класс для представления понятия "контроллер видеомагнитофона" #4
у меня получилось что то вроде этого
но чуствую многовато косяков - проверьте
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)
{ //манипулятор ввода и вывода в виде дружественных функций
}
};
Добавлено через 15 минут 46 секунд
А что делается в этой строчке return *this;
и не очень понятно зачем используются inline и const
ISergey
Maniac
Эксперт С++
1346 / 879 / 51
Регистрация: 02.01.2009
Сообщений: 2,643
Записей в блоге: 1
11.06.2009, 19:55     класс для представления понятия "контроллер видеомагнитофона" #5
LenaSV, вы уже шестую тему создали про свой "контроллер видеомагнитофона" только на этом форуме. Я видел ещё на двух других. ппц.
Цитата Сообщение от Rififi Посмотреть сообщение
Да сколько же у тебя этих магнитофонов??? :eek:
Иногда магнитофон возвращается..., часть четвертая
:lol:
точно.
LenaSV
0 / 0 / 0
Регистрация: 11.04.2009
Сообщений: 22
11.06.2009, 19:59  [ТС]     класс для представления понятия "контроллер видеомагнитофона" #6
а по теме ничего нет
Yandex
Объявления
11.06.2009, 19:59     класс для представления понятия "контроллер видеомагнитофона"
Ответ Создать тему
Опции темы

Текущее время: 11:44. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru