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

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

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

Класс-массив - C++

08.05.2014, 17:08. Просмотров 204. Ответов 5
Метки нет (Все метки)

Здравствуйте. Нужно разъяснение.
Есть класс "Масса" всё корректно работает, нареканий нет.
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class MMas
{
        private:
                float Mas;
                String Un;
        public:
                MMas(){Mas=0; Un="г";} //по умолчанию
 
                void SetMas(float m);//установка значения
                void SetUn(String u); //установка размерности
 
                void SetMasStr(char *str, int len); //установка значения и размерности из строки
                float GetMas(){return Mas;}// запись массы
                String GetUn(){return Un;}//запись значение
                void SetUnNo(int q);//установка значение с помощью списка
                void Convert(String r, float s);//перевод в граммы
};

Понадобилось создать второй класс-массив и реализовать "Двустороннюю очередь" (Не доделан до конца, т.к. столкнулся с проблемой, проблема далее).
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
class ArrMas
{
        private:
                MMas* Arr;
                unsigned int Len;
        public:
                ArrMass(){Arr=0; Len=0;} // Конструктор по умолчанию (размер массива 0)
                ~ArrMas(){if(Arr) delete[]Arr;}
                void SetSize();//установка размера
                MMas& operator[](unsigned int i);
                void AddF(MMas& z1);//добавление в начало
};

Нажимаю я кнопку, масса вводится, конвертируется и не могу понять, как записать объект класса MMas в этот Класс-массив. Рассмотрю на примере "Добавление в начало очереди"
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
void ArrMas::AddF(MMas& z1)//добавление в начало
{
        SetSize();//увеличиваем размер массива на 1
        for(int i=Len; i>0; i--)
                Arr[i]=Arr[i-1];
        Arr[0]=z1;
}

Вот кусок программы:
C++
1
2
3
4
5
MMas a;
ArrMas a1;
a.SetMasStr(Edit3->Text.c_str(),(Edit3->Text).Length());
a.Convert(a.GetUn(),a.GetMas());
a1.AddF(a);
Собственно, разъясните, как правильнее записать. Спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.05.2014, 17:08
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Класс-массив (C++):

Класс домов и класс улиц для учета поступлений квартплаты. Массив - C++
Задание: вырезано Файл StdAfx.h #pragma once #include "targetver.h" #include <stdio.h>

Создать Класс Coins (монеты). Класс сохраняет массив из 3 монет ... - C++
Помогите написать програмку, где: Нужно создать Класс Coins (монеты). Класс сохраняет массив из 3 монет и общее количество лицевых сторон...

Шаблонный класс и класс одномерный массив - C++
Задание: протестировать класс шаблон, с обычными типами данных я понял как делать, а как передать в шаблон свой класс я не понял. ...

Класс "Динамический массив точек", в котором лежит класс Point - C++
Такое вот условаие. Не могу понять что от меня хотят. Может кто или обьяснить или дать пример решения. (лучше просто объяснить). ...

опп класс и массив (создать массив указателей по выборке животных, участвующих в забеге) - C++
Здравствуйте! Есть задача... вкратце. Нужно создать массив указателей по выборке животных участвующих в забеге. Это Лошадь, Крокодил,...

Описать класс Массив, найти массив, состоящий из элементов первого и второго массива - C++
Процедура по поиску такого массива работает, но после нее меняются элементы первого массива. И еще вопрос - как в конце программы...

5
Catstail
Модератор
22639 / 11007 / 1784
Регистрация: 12.02.2012
Сообщений: 18,169
08.05.2014, 19:35 #2
Что-то я не обнаружил в коде класса ArrMass ни одного оператора new... Где память-то выделяется?
0
Taxoma
0 / 0 / 0
Регистрация: 15.12.2013
Сообщений: 30
08.05.2014, 20:05  [ТС] #3
Catstail, у меня это сделано в void SetSize();
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
void ArrMas::SetSize()
{
      MMas *tmp;
      Len++;
      tmp=new MMas[Len];
      if(Arr)
      {
            for(unsigned int i=0; i<Len; i++)
                  tmp[i]=Arr[i];
            delete[]Arr;
      }
      Arr=tmp;
      delete[]Arr;
}
Добавлено через 14 минут
в последней строке, так, описался.
C++
1
delete[]tmp;
0
Taxoma
0 / 0 / 0
Регистрация: 15.12.2013
Сообщений: 30
10.05.2014, 13:54  [ТС] #4
Вот при записи в массив вылазит ошибка
0
Croessmah
Эксперт CЭксперт С++
13412 / 7563 / 855
Регистрация: 27.09.2012
Сообщений: 18,614
Записей в блоге: 3
Завершенные тесты: 1
10.05.2014, 13:57 #5
C++
1
2
      Arr=tmp;
      delete[]Arr;
Освободили память и теперь Arr "указывает" на кусок освобожденной памяти.
0
Taxoma
0 / 0 / 0
Регистрация: 15.12.2013
Сообщений: 30
10.05.2014, 14:21  [ТС] #6
Croessmah, там было не верно. Если убрать последнюю строку, будет верно? Я так понимаю, у меня ошибка из-за того, что память не правильно выделяется.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.05.2014, 14:21
Привет! Вот еще темы с ответами:

Написать класс Матрица. Массив объектов класса Массив - C++
Написать класс Матрица (в данном случае матрица – массив объектов класса Массив из предыдущего задания). В классе реализовать следующие...

Есть класс A и класс B, класс B вложен в класс A и вложен в него, как классу B получить доступ к переменным класса A просто по имени? - C++
На самом деле ничё фантастического я не прошу, ведь: template &lt;class T&gt; class matrix { friend class diagonal; ...

Класс "Телефонная станция". Массив символов и массив строк - в чем разница? - C++
Всем привет. Не могу исправить в программе пункт корректировки. Весь проект прикрепляю к сообщению. ...

Создать базовый класс "Массив" и класс-наследник "Матрица" - C++
Добрый день! такой вопрос, как задать двумерный массив и заполнить его рандомными числами. и как его реализовать используя абстрактные...


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

Или воспользуйтесь поиском по форуму:
6
Yandex
Объявления
10.05.2014, 14:21
Ответ Создать тему
Опции темы

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