Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 15.12.2013
Сообщений: 30

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

08.05.2014, 17:08. Показов 619. Ответов 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
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
08.05.2014, 17:08
Ответы с готовыми решениями:

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

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

Класс: Создать класс, объектом которого будет являться двумерный массив размерностью n x m.
Нужно создать класс, объектом которого будет являться двумерный массив размерностью n x m. Массив должен размещаться в динамической памяти....

5
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38179 / 21114 / 4307
Регистрация: 12.02.2012
Сообщений: 34,721
Записей в блоге: 14
08.05.2014, 19:35
Что-то я не обнаружил в коде класса ArrMass ни одного оператора new... Где память-то выделяется?
0
0 / 0 / 0
Регистрация: 15.12.2013
Сообщений: 30
08.05.2014, 20:05  [ТС]
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
0 / 0 / 0
Регистрация: 15.12.2013
Сообщений: 30
10.05.2014, 13:54  [ТС]
Вот при записи в массив вылазит ошибка
0
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,035
Записей в блоге: 1
10.05.2014, 13:57
C++
1
2
      Arr=tmp;
      delete[]Arr;
Освободили память и теперь Arr "указывает" на кусок освобожденной памяти.
0
0 / 0 / 0
Регистрация: 15.12.2013
Сообщений: 30
10.05.2014, 14:21  [ТС]
Croessmah, там было не верно. Если убрать последнюю строку, будет верно? Я так понимаю, у меня ошибка из-за того, что память не правильно выделяется.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
10.05.2014, 14:21
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru