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

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

Войти
Регистрация
Восстановить пароль
 
FauLL
3 / 3 / 1
Регистрация: 17.05.2010
Сообщений: 64
#1

Описать класс "Массив" с соответствующими методами - C++

28.06.2014, 23:36. Просмотров 569. Ответов 6
Метки нет (Все метки)

Класс «Массив». Методы: объединение двух массивов, перестроение порядка следования элементов на противоположный, вывод элементов массива на дисплей.

Не выходит объединение массивов и вывод массива в обратном порядке.

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
template <class T> class Mas //Mas<int> *iperem; Mas<float> *fperem;
{
private:
    T *Buffer;
    T Size;
    T curSize;
public:
 
    Mas(T nSize) // конструктор
    {
        Size = nSize;
        curSize = 0;
        Buffer = new T[Size];
    }
 
    ~Mas() // деструктор
    {
        delete[]Buffer;
    }
 
    T GetCurSize()
    {
        return curSize;
    }
 
    T GetValue(T index)
    {
        return Buffer[index];
    }
 
          void GroupMas(Mas<T> *M, Mas<T> *M2)//Объединение двух массивов
    {
        for (int i = 0; i <= M->GetCurSize() + M2->GetCurSize(); i++)
        {
            if (i <= M->GetCurSize())
                Buffer[i] = M->GetValue(i);
            else
                Buffer[i] = M2->GetValue(i - M->GetCurSize());
        }
        
    }
 
    void ShowSort(CListBox *Cl, Mas<T> *M, Mas<T> *M2)//Сортировка в обратном порядке
    {
        Cl->ResetContent();
 
        for (int i = M->GetCurSize() + M2->GetCurSize(); i >= 0; i--)
        {
            CString s;
            s.Format(_T("Массив:%i"), Buffer[i]);
            Cl->AddString(s);
        }
 
    }
 
};
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.06.2014, 23:36     Описать класс "Массив" с соответствующими методами
Посмотрите здесь:
Реализовать базовый класс "Футбольная команда" и класс-наследник с методами консольного ввода/вывода C++
C++ Описать класс "Массив"
C++ Описать класс "Массив"
Создать класс "Дата" с конструкторами, деструктором, указанными методами. Выполнить перегрузку указанных операторов C++
C++ Создать класс "Квадрат" с методами
C++ Описать класс "множество", позваляющий выполнять основные операции
C++ Описать класс "вещь", описывающий габариты и вес предмета
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
xtorne21st
интересующийся
303 / 274 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
29.06.2014, 00:04     Описать класс "Массив" с соответствующими методами #2
FauLL, Во первых, перед тем как объеденять буферы, нужно создать новый с соответствующим размером.
Во вторых, в строчке
C++
1
for (int i = 0; i <= M->GetCurSize() + M2->GetCurSize(); i++)
в выражении i <= M->GetCurSize() + M2->GetCurSize() должно быть строго меньше... и т.д.
IrineK
Заблокирован
29.06.2014, 05:25     Описать класс "Массив" с соответствующими методами #3
FauLL, напишите метод Add добавления элемента в хвост.
Тогда объединение реализуется через Add

Что у вас за Size и curSize?
У вас же динамический массив. У него один размер - актуальный.

Еще вопрос: почему Size типа Т?
FauLL
3 / 3 / 1
Регистрация: 17.05.2010
Сообщений: 64
29.06.2014, 14:15  [ТС]     Описать класс "Массив" с соответствующими методами #4
Вот создаю 3 динамических массива

C++
1
2
3
Mas<int> *iMas = new Mas<int>(20);
Mas<int> *iMas2 = new Mas<int>(20);
Mas<int> *iMas3 = new Mas<int>(20);
Вызываю метод

C++
1
2
iMas3->GroupMas(iMas, iMas2);
iMas3->ShowSort(&List3, iMas, iMas2);
в выражении i <= M->GetCurSize() + M2->GetCurSize() должно быть строго меньше... и т.д.
Если я сделаю его строго меньше, то у меня последнего элемента не будет.

Что у вас за Size и curSize?
Size-Размер массива
curSize-номер элемента массива

FauLL, напишите метод Add добавления элемента в хвост.
Тогда объединение реализуется через Add
Ну так я и пытаюсь реализовать добавление элемента в хвост в методе GroupMas
FauLL
3 / 3 / 1
Регистрация: 17.05.2010
Сообщений: 64
30.06.2014, 20:03  [ТС]     Описать класс "Массив" с соответствующими методами #5
Сделал объединение двух массивов, но результат не такой как ожидалась

C++
1
2
3
4
5
6
7
8
9
10
11
void GroupMas(Mas<T> *M, Mas<T> *M2)//Объединение двух массивов
    {
        for (int i = 0; i <= M->GetCurSize() + M2->GetCurSize(); i++)
        {
            if (i <= M->GetCurSize())
                Buffer[i] = M->GetValue(i);
            else
                Buffer[i] = M2->GetValue(i - M->GetCurSize());
        }
        
    }
Опробовал все способы вывода массива в обратном порядке, но ни один из них не работает.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
void ShowSort(CListBox *Cl, Mas<T> *M, Mas<T> *M2)//Сортировка в обратном порядке
    {
        Cl->ResetContent();
 
        for (int i = M->GetCurSize() + M2->GetCurSize() - 1; i >= 0; i--)
        {
            CString s;
            s.Format(_T("[%i]%i"), i, Buffer[i]);
            
            Cl->AddString(s);
        
        }
 
    }
Третий элемент массива вообще не известно откуда берется.
Описать класс "Массив" с соответствующими методами
IrineK
Заблокирован
01.07.2014, 01:29     Описать класс "Массив" с соответствующими методами #6
У вас неправильно разработан контейнер. По сути у вас должен быть стек на динамическом массиве.

Здесь - набросок: Шаблонный стек на динамическом массиве для встроенных типов
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.07.2014, 22:41     Описать класс "Массив" с соответствующими методами
Еще ссылки по теме:
Описать класс "полином" - Для чего нужен конструктор по умолчанию? C++
C++ Описать класс "множество" вещественных чисел, позволяющий выполнять основные операции
Описать класс "треугольник" (перевести код с C#) C++
Описать класс "домашняя библеотека" C++
Описать класс "выставочные экспонаты" C++

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

Или воспользуйтесь поиском по форуму:
FauLL
3 / 3 / 1
Регистрация: 17.05.2010
Сообщений: 64
01.07.2014, 22:41  [ТС]     Описать класс "Массив" с соответствующими методами #7
Сделал! Всем спасибо за внимание
Yandex
Объявления
01.07.2014, 22:41     Описать класс "Массив" с соответствующими методами
Ответ Создать тему
Опции темы

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