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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.85
Vadya
1 / 1 / 0
Регистрация: 04.10.2010
Сообщений: 14
#1

Класс "Массив". Перегрузка стандартных операций - C++

25.10.2010, 16:05. Просмотров 1652. Ответов 3
Метки нет (Все метки)

Дан класс (возможное имя класса Massiv), задающий массив целых чисел. Поля класса: указатель на массив (тип int *), число элементов массива (тип int). Класс включает конструктор без параметров, задающий пустой массив (число элементов равно 0) и конструктор, создающий массив на основе существующего массива (тип int A[]).
Необходимо перегрузить операции и продемонстрировать их работу.
Помогите 2 задачи
1) Перегрузить операцию [] (обращение к элементу массива) и операцию + (сложение). В операции + первый операнд имеет тип указатель на массив целых чисел (int *), а второй тип Massiv, считать, что длины массивов одинаковые. В результате получаем новый объект типа Massiv, длина которого равна длине исходных массивов, а элемент равен сумме соответствующих элементов (имеющих одинаковые индексы).
2) Перегрузить операцию [] (обращение к элементу массива) и операцию + (сложение). В операции + два операнда имеют тип Massiv, в результате получаем новый объект типа Massiv, длина которого равна сумме длин исходных массивов, вначале записываются элементы из первого исходного массива затем из второго.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.10.2010, 16:05
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Класс "Массив". Перегрузка стандартных операций (C++):

"динамическая строка" и перегрузка операций (класс) - C++
Добрый день! Прошу помочь написать,подсказать,что исправить в программе по заданию: Пользовательский класс String должен содержать...

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

Класс "динамический массив", перегрузка операторов +, = - C++
Делаю класс динамического массива. Перегружая при этом операторы. На данный момент банально не могу перегрузить + и =. Visual Studio...

Класс "Матрица". Перегрузка оператора "минус" - C++
Помогите дописать программу или исправить ее. Нужно было написать программу, где создать класс матрицы, используя двухмерный динамический...

Перегрузка операций методами класса "Круг" - C++
Класс – круг на плоскости: Переопределить методами класса операции:  Объект1=Объект2  Объект+=вещественное число ...

Перегрузка операций в классе "рациональная дробь" - C++
Есть класс "рациональная дробь" с двумя закрытыми полями - числитель и знаменатель. Нужно перегрузить оператор сложения,таким образом...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Vadya
1 / 1 / 0
Регистрация: 04.10.2010
Сообщений: 14
27.10.2010, 14:16  [ТС] #2
Форумчани!!! Проверьте правильно написанна эта программа???
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
#include <iostream>
 
class Massive
{
  friend Massive operator+(const int *, const Massive &);
public:
  Massive(): size(0), p(0) { }
  Massive(const int *, const int);
  Massive(const Massive&);
  Massive& operator=(const Massive&);
  ~Massive() { delete [] p; }
  int &operator[](const int i) { return p[i]; }
  const int &operator[](const int i) const { return p[i]; }
  void debug() const;
private:
  int size;
  int *p;
};
 
Massive::Massive(const int *a, const int sz): size(sz),p(new int[sz])
{
  for (int i = 0; i != size; ++i)
    p[i] = a[i];
}
 
Massive::Massive(const Massive &rhs):size(rhs.size),p(new int[rhs.size])
{
  for (int i = 0; i != size; ++i)
    p[i] = rhs.p[i];
}
 
Massive& Massive::operator=(const Massive &rhs)
{
  if (this != &rhs)
  {
    delete [] p;
    p = new int[rhs.size];
    size = rhs.size;
    for (int i = 0; i != rhs.size; ++i)
      p[i] = rhs.p[i];
  }
  return *this;
}
 
void Massive::debug() const
{
  std::cout << "size = " << size << std::endl;
  for (int i = 0; i != size; ++i)
    std::cout << p[i] << " ";
  std::cout << std::endl;
}
 
Massive operator+(const int *a, const Massive &rhs)
{
  Massive temp(rhs);
  for (int i = 0; i != rhs.size; ++i)
    temp[i] += a[i];
  return temp;
}
 
int main()
{
  int a1[5] = {1, 3, 5, 2, 1};
  int a2[6] = {3, 41, 2, 23, 2};
  Massive obj1(a1, 5);
  Massive obj2(a2, 6);
  obj1.debug();
  Massive obj3;
  obj3 = a2 + obj1;
  obj3.debug(); 
  obj3[2] = 2;
  obj3[1] = obj1[2];
  obj3.debug();
  return 0;
 
}
NiTan
27.10.2010, 14:39
  #3

Не по теме:

Dimanho, хватит флудить!

Vadya
1 / 1 / 0
Регистрация: 04.10.2010
Сообщений: 14
27.10.2010, 22:56  [ТС] #4
ну хоть кто нибудь посмотрите плз!!!!!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.10.2010, 22:56
Привет! Вот еще темы с ответами:

Класс "Дробь". Перегрузка оператора "==" - C++
template &lt;class T&gt; void polynomial&lt;T&gt;::refresh(){ //отбрасывающую старшие члены полинома с нулевыми коэффициентами int counter = 0;...

Класс "Матрица", перегрузка оператора "+" - C++
Здравствуйте. Создаю класс матрица, в нём перегружаю оператор &quot;+&quot;. На этапе компиляции всё замечательно, но при запуске программа вылетает....

Перегрузка операций класса "Прямоугольник" - C++
Помогите! Я не представляю как сделать операции сравнения, а остальное вроде бы получилось. Необходимо выполнить перегрузку операций...

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


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

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

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