Advertisement
Guest User

Untitled

a guest
Feb 19th, 2020
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.91 KB | None | 0 0
  1. #include <iostream>
  2. #include<list>
  3. #include<vector>
  4. using std::vector;
  5. using std::list;
  6.  
  7.  
  8. class FileAudio {
  9. private:
  10. double MB;
  11. public:
  12. double dimensione() const { return MB; }
  13. virtual FileAudio* clone() const = 0;
  14. virtual bool quality() const = 0;
  15. };
  16.  
  17. class Mp3 : public FileAudio {
  18. private:
  19. double bitrate;
  20. public:
  21. double get_bitrate() const { return bitrate; }
  22. virtual Mp3* clone() const {
  23. return new Mp3(*this);
  24. }
  25. virtual bool quality() const {
  26. return get_bitrate() >= 256;
  27. }
  28. };
  29.  
  30. class WAV : public FileAudio {
  31. private:
  32. double campionamento;
  33. public:
  34. double frequenza() const { return campionamento; }
  35. virtual WAV* clone() const {
  36. return new WAV(*this);
  37. }
  38. virtual bool quality() const {
  39. return frequenza() >= 192;
  40. }
  41. };
  42.  
  43. class MusicPlay {
  44. private:
  45. list<const FileAudio*> l;
  46. public:
  47. vector<WAV*> qualityWAV(double dim) const {
  48. vector<WAV*> v;
  49. for (list<const FileAudio*>::const_iterator it = l.begin(); it != l.end(); ++it) {
  50. const WAV * temp= dynamic_cast<const WAV*>(*it);
  51. if (temp && temp->dimensione() <= dim)
  52. v.push_back(const_cast<WAV*>(temp));
  53. }
  54. return v;
  55.  
  56. }
  57. list<FileAudio*> nonConstCopy() const {
  58. list<FileAudio*> lista;
  59. for (list<const FileAudio*>::const_iterator it = l.begin(); it != l.end(); ++it) {
  60. lista.push_back(const_cast<FileAudio*>((*it)->clone()));
  61. }
  62. }
  63. vector<Mp3> removeMp3(unsigned int br) {
  64. vector<Mp3> v;
  65. for (list<const FileAudio*>::const_iterator it = l.begin(); it != l.end(); ++it) {
  66. Mp3* temp = dynamic_cast<Mp3*>(const_cast<FileAudio*>(*it));
  67. if (temp && temp->get_bitrate() < br) {
  68. delete* it;
  69. v.push_back(*temp);
  70. }
  71. }
  72. }
  73. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement