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

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

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

Object-oriented programming Help - C++

24.09.2011, 11:59. Просмотров 456. Ответов 0
Метки нет (Все метки)

Помогите пожалуйста доделать, никак не могу довести до ума собственно вот задача:
Объект – музыкальный альбом.
Включает в себя список музыкальных композиций.
Действия – Определение свойств класса
Нахождение ответа на вопрос «сколько различных исполнителей входит в музыкальный альбом»
Методы для класса-контейнера –
Возврат объекта – альбом, состоящий из песен одного исполнителя
Возврат списка – альбомов, состоящих из песен одного исполнителя
Добавление альбома
Удаление альбома с заданными параметрами
Получение объекта из списка по порядковому номеру
Задание:
Использовать перегрузку функций. Не выполнять интерфейсные действия (например, вывод на экран) во внутренних функциях классов, добавить класс – контейнер для объектов, представляющий собой односвязный список. Класс-контейнер должен содержать только защищенные данные. Класс-контейнер должен включать методы, указанные в варианте. Для класса-контейнера определить конструктор. Не использовать интерфейсные действия внутри классов. Добавить функцию, не являющуюся методом, какого либо класса, выдающую информацию о содержимом класса-контейнера.

Примечание: динамически списки реализовать через собственное описание, а не через библиотечные шаблоны.

Ну и собственно мои наработки
Track.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#pragma once
 
class Track
{
    char *name;
    char *author_name;
public:
    Track(void);
    Track(char *name, char *author_name);
    char *get_author_name();
    char *get_name();
    ~Track(void);
};
Track.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include "Track.h"
#include <string>
 
Track::Track(void)
{
}
Track::Track(char *name, char *author_name)
{
    this->name=new char [100];
    this->author_name=new char [100];
    strcpy(this->name, name);
    strcpy(this->author_name, author_name);
}
Track::~Track(void)
{
}
char *Track::get_author_name()
{
    return author_name;
}
char *Track::get_name()
{
    return name;
}
Album.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#pragma once
#include "Track.h"
 
class Album
{
    int n;
    Track *collection;
public:
    Album(void);
    Album(int n);
    int different_name();
    void push_track(int i, Track track);
    ~Album(void);
};
Album.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#include "Album.h"
#include<string.h>
 
Album::Album(void)
{
}
Album::Album(int n)
{
    this->n=n;
    collection=new Track [n];
}
 
Album::~Album(void)
{
}
int Album::different_name()
{
    int count=0;
    char * *a;
    a=new char * [n];
    int i;
    for(i=0; i<n; i++)
        a[i]=new char [100];
    
    bool flag;
    for(i=0; i<n; i++)
    {
        char *author_name=collection[i].get_author_name();
        flag=true;
        for(int j=0; j<n; j++)
        {
            if(!strcmp(a[j], author_name) )
                flag=false;
            break;
        }
        if(flag==true)
        {
            count++;
            strcpy(a[count-1], author_name);
 
        }
    }
    return count;
}
void Album::push_track(int i, Track track)
{
    collection[i]=track;
}
Container.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#pragma once
#include "Track.h"
#include "Album.h"
 
struct obj
 {
  int index;
  team info;
  obj *rlink, *llink;
 };
class Container
{
    obj *left, *right,*q,*k;
    bool f;
public:
    Container(void);
    obj* out_list();
    void add_obj(team t);
    obj* out_list_too();
    void delete_object(int i);
    ~Container(void);
};
Container.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
#include "Container.h"
 
Container::Container(void)
{
}
 
Container::~Container(void)
{
}
 
container::container()
{
 f=false;
 k=new obj;
 k->rlink=NULL;
 k->llink=NULL;
 right=k;
 q=k;
 k->index=1;
}
container::~container()
{
 delete left,right,k,q;
 cout<<"\nДеструктор завершил удаление списков!\n";
 system("pause");
}
void container::add_obj(Album t)
{
 if(!f)
 { 
  f=true;
  k->info=t;
 }
 else
 {
  k=new obj;
  k->info=t;
  k->index=(q->index)+1;//k->llink->index+1;
 
  k->rlink=q;
  q->llink=k;
  q=k;
  q->llink=NULL;
  left=q;
 }
}
obj* container::out_list()
{
 return right;
}
obj* container::out_list_too()
{
 bool fl=true;
 obj *r,*rt,*lt,*qt;
 k=right;
 
 r=new obj;
 r->rlink=NULL;
 r->llink=NULL;
 rt=r;
 qt=r;
 
 while(k)
 {
  if(k->info.too())
   if(fl)
   {
    fl=false;
    r->info=k->info;
    r->index=k->index;
   }
 
   else
   {
    r=new obj;
    r->info=k->info;
    r->index=k->index;
    r->rlink=qt;
    qt->llink=r;
    qt=r;
   }
  k=k->llink;
 }
 
 qt->llink=NULL;
 lt=q;
 return rt;
}
int container::out_kol_track_by_index(int i)
{
 k=right;
 while(k)
 {
  if(i==k->index) return k->info.kol();
  k=k->llink;
 }
 return 0;
 
}
void container::delete_object(int i)
{
 k=left;
 obj *l;
 
 while(k!=NULL)
  if(k->info.delete_..(i))
  if(k==left) 
  {
   q=k;
   left=k->rlink;
   left->llink=NULL;
   l=k=left;
   delete q;
  }
  else
   if(k==right)
   {
    q=k;
    right=k->llink;
    right->rlink=NULL;
    k=NULL;
    delete q;
   }
   else
   {
   q=k;
   l->rlink=k->rlink;
   k->rlink->llink=l;
   delete q;
   k=l->rlink;
   }
 else
 {
  l=k;
  k=k->rlink;
 }
}
Главная функция main.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 #include "Track.h"
#include "Album.h"
#include "Container.h"
#include <iostream>
using namespace std;
int main()
{
    Album main_album(3);
    Track one("Some name", "Some author"),
        two("Yet another name", "Some author"),
        three("Yet yet another name", "Yet another author");
    main_album.push_track(0, one);
    main_album.push_track(1, two);
    main_album.push_track(2, three);
    cout<<main_album.different_name();
 
 
    return 0;
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.09.2011, 11:59
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Object-oriented programming Help (C++):

What are a few of the functional-style programming methods that are available in C++11? - C++
What are a few of the functional-style programming methods that are available in C++11? сабж :senor:

Programming Principles And Practice Using C++ 2nd Edition - C++
Programming Principles And Practice Using C++ 2nd Edition http://www.stroustrup.com/programming.html где взять листинги кода которые...

Отдам книжку Programming Principles and Practice Using C++ (ENG) - C++
Товарищи, энное количество лет назад, когда трава была зеленее, а доллар стоил в N раз меньше, я стал обладателем книжки . Вот такой:...

Вывод в системе programming-challenges - сравнить две реализации - C++
И снова добрый день! Я конечно не знаю, может быть я тупой критично не внимателен, но может мне кто нибудь объяснит чем мой вывод: ...

Существует ли перевод книги Страуструпа C++ programming language, 4th edition? - C++
Всем привет Меня интересует следующий вопрос: Кто-то видел полностью переведенную книгу от Страуструпа &quot;c++ programming language 4th...

Где купить или скачать книгу Scott Meyers, Effective C++ Programming - C++
Всем привет, Кто может подсказать, где в Интернете можно скачать книгу Scott Meyers, Effective C++ Programming? Или купить. Я не нашел...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.09.2011, 11:59
Привет! Вот еще темы с ответами:

Изучение Stroustrup "The C++ Programming Language" (4th Edition) - C++
Обнаружил, что тем по 4-ому изданию никто не создавал, это скорее упущение для нашего форума. Речь об этой книге...

Что такое "Data-driven programming"? - C++
пожалуйста, объясните на пальцах, что такое Data-driven programming ?

Uncaught TypeError: Object [object Object] has no method - jQuery
Всем привет. Я новичок в этой сфере. у меня возникла ошибка в консоли при добавлении карусели на сайт: &quot;Uncaught TypeError: Object has...

Получение имени объекта. Функция public String getName(Object object) {...} - Java
К примеру есть объекты: Object myObject111 = new Object(); File parentDirectory = new File(); Хочу такую функцию: public String...


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

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

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