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

Object-oriented programming Help - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Вывести три числа, представляющие следующую дату. http://www.cyberforum.ru/cpp-beginners/thread355703.html
Помогите решить задачи. Я вас очень прошу. Без всяких ошибок и неточностей. Пожалуйста поскорей вышлите решения. Ваша помощь мне очень важна. 1.Given three natural numbers a, b, c which represent the day, month and year of some date. For example: 1, 4, 1991 represents 1st April 1991. Output three numbers which represent the following date. Example: Input: 1 4 1991 Output 2 4 1991...
C++ Как в АВЛ-дереве найти самую короткую ветвь и удалить ее? Доброго времени суток. Нужна помощь. В АВЛ-дереве надо найти самую короткую ветвь и удалить ее. Я могу удалить только узел по ключу (ну и конечно опять сбалансировать). Никак не пойму, как это проделать с веткой и как ее вообще найти. (( Если кто знает, намекните, пожалуйста. Спасибо за любую информацию. Добавлено через 13 часов 27 минут Н-да.. Кажись с форумом промашка вышла.. http://www.cyberforum.ru/cpp-beginners/thread355701.html
Подключение библиотеки SDK GFL C++
Нужно подключить библиотеку SDK GFL в C++Builder. Подключаю неявно: implib'ом преобразовал в форму читаемую билдером, получил файл libgfl.lib прописал #include <libgfl.h> #pragma link "libgfl.lib" путь к libgfl.h и libgfl.lib добавил в Include path и Library path соответственно. Исходную библиотеку - libgfl340.dll бросил в папку проекта. Но при вызове функций с библиотеки вылезает...
Простенькая задачка из Timus Online Judge(1005. Куча камней) C++
Собственно условие: http://acm.timus.ru/problem.aspx?space=1&num=1005 Моё решение: #include <iostream> using namespace std; void main() { long int N = 0, A = 0, *W, *W1, *W2, a_buf1 = 0, a_buf2 = 0, buff = 0; cin >> N; W = new long int; W1 = new long int;
C++ Обучиться и самому написать толковый клиент\программу http://www.cyberforum.ru/cpp-beginners/thread355658.html
Здравствуйте нужно как можно быстрее обучиться языкам для написания программы. Она должна работать только по интернету. Что мне для этого нужно знать ? SQL, C++ ?.. Можно ли объединять в одной программе 2 языка ? Для увеличения быстродействия ? Например что-то писать на ассемблере ? ;) Посоветуйте пожалуйста все(книги\видео\семинары...)обуч. материалы, только самые лучшие, без всякой...
C++ Подсчитать количество слов и определить и вывести на экран максимальное и минимальное слова и их длину. Подсчитать количество слов и определить и вывести на экран максимальное и минимальное слова и их длину. Помогите написать...срочно очень нужно... есть фотография этой проги нужно ее переписать чтоб было не заметно что я списал прогу у друга. http://s55.***********/i149/1109/df/5aeb5e66c7de.jpg подробнее

Показать сообщение отдельно
Morak
0 / 0 / 0
Регистрация: 24.10.2010
Сообщений: 10
24.09.2011, 11:59     Object-oriented programming Help
Помогите пожалуйста доделать, никак не могу довести до ума собственно вот задача:
Объект – музыкальный альбом.
Включает в себя список музыкальных композиций.
Действия – Определение свойств класса
Нахождение ответа на вопрос «сколько различных исполнителей входит в музыкальный альбом»
Методы для класса-контейнера –
Возврат объекта – альбом, состоящий из песен одного исполнителя
Возврат списка – альбомов, состоящих из песен одного исполнителя
Добавление альбома
Удаление альбома с заданными параметрами
Получение объекта из списка по порядковому номеру
Задание:
Использовать перегрузку функций. Не выполнять интерфейсные действия (например, вывод на экран) во внутренних функциях классов, добавить класс – контейнер для объектов, представляющий собой односвязный список. Класс-контейнер должен содержать только защищенные данные. Класс-контейнер должен включать методы, указанные в варианте. Для класса-контейнера определить конструктор. Не использовать интерфейсные действия внутри классов. Добавить функцию, не являющуюся методом, какого либо класса, выдающую информацию о содержимом класса-контейнера.

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

Ну и собственно мои наработки
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;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 22:49. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru