-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.cpp
More file actions
109 lines (94 loc) · 2.65 KB
/
Copy pathmain.cpp
File metadata and controls
109 lines (94 loc) · 2.65 KB
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
/*1. Ñîçäàéòå êëàññ «Ìàññèâ öåëûõ ÷èñåë». Âíóòðè íåãî æèâ¸ò äèíàìè÷åñêè âûäåëÿåìûé ìàññèâ öåëûõ ÷èñåë.
Ìàññèâ âûäåëÿåòñÿ â êîíñòðóêòîðå; ðàçìåð ïåðåäàþò êàê àðãóìåíò êîíñòðóêòîðà. Â äåñòðóêòîðå ìàññèâ óíè÷òîæàåòñÿ.
Íàïèøèòå ìåòîäû:
• Ñäåëàòü âñå ÷èñëà ìàññèâà ñëó÷àéíûìè
• Ïåðåâûäåëèòü ìàññèâ ñ ðàçìåðîì íà 1 áîëüøå; ïåðåíåñòè â íåãî âñå ñòàðûå çíà÷åíèÿ
• Ðàñïå÷àòàòü ìàññèâ (êîíñòàíòíûé ìåòîä)
• Óçíàòü ðàçìåð ìàññèâà (êîíñòàíòíûé ìåòîä)
2. Äîáàâüòå â êëàññ Ìàññèâà öåëûõ ÷èñåë êîíñòðóêòîð êîïèðîâàíèÿ. Êàæäûé îáúåêò êëàññà õðàíèò ïåðñîíàëüíóþ êîïèþ ìàññèâà öåëûõ ÷èñåë. Åñëè îáúåêò óìèðàåò, îí óíè÷òîæàåò ñâîþ êîïèþ.
Ïðîâåðüòå, ÷òî êîíñòðóêòîð êîïèðîâàíèÿ ðàáîòàåò.
3. Íàïèøèòå ôóíêöèþ êîíêàòåíàöèè äâóõ Ìàññèâîâ öåëûõ ÷èñåë:
Ìàññèâ1 + Ìàññèâ2 = Ìàññèâ3
Îíà ïðèíèìàåò äâà îáúåêòà Ìàññèâîâ öåëûõ ÷èñåë è ñîçäà¸ò íîâûé â îòâåò. Âûçîâèòå ýòó ôóíêöèþ è ðàñïå÷àòàéòå ðåçóëüòàò. Óçíàéòå, ñêîëüêî ðàç áûë âûçâàí êîíñòðóêòîð êîïèðîâàíèÿ.
*/
#include <string>
#include <iostream>
#include <cassert>
#include <time.h>
using namespace std;
class Array_int
{
private:
int* m_arr;
int m_length;
public:
Array_int(int length) // êîíñòðóêòîð
{
assert(length > 0);
m_arr = new int[length];
m_length = length;
}
Array_int(const Array_int& original, int length)
{
m_arr = new int[length];
Array_int m_arr = original;
}
~Array_int() // äåñòðóêòîð
{
delete[] m_arr;
}
void fillRandom()
{
srand(time(NULL));
for (int count = 0; count < m_length; ++count)
m_arr[count] = rand() % 10 + 1;
}
int getLength() const
{return m_length;}
int getValue(int index)
{ return m_arr[index]; }
void print() const
{
for (int count = 0; count < m_length; ++count)
cout << m_arr[count] << " ";
cout << endl;
}
void plusOne()
{
int* m_arr_plusOne;
m_arr_plusOne = new int[m_length + 1];
for (int count = 0; count < m_length; count++)
m_arr_plusOne[count] = m_arr[count];
for (int count = 0; count < m_length+1; ++count)
cout << m_arr[count] << " ";
cout << endl;
}
};
void konkat(Array_int& arr1, Array_int& arr2)
{
int* konkat_arr;
konkat_arr = new int[arr1.getLength() + arr2.getLength()];
for (int count = 0; count < arr1.getLength() + arr2.getLength(); count++)
if (count < arr1.getLength())
konkat_arr[count] = arr1.getValue(count);
else
konkat_arr[count] = arr2.getValue(count - arr1.getLength());
for (int count = 0; count < arr1.getLength() + arr2.getLength(); count++)
cout << konkat_arr[count] << " ";
cout << endl;
}
int main()
{
Array_int arr1(10);
arr1.print();
arr1.fillRandom();
arr1.print();
//arr1.plusOne();
Array_int arr2(5);
//arr2 = { arr1 };
cout << endl;
arr2.fillRandom();
arr2.print();
konkat(arr1, arr2);
return 0;
}