include iostream include stdlib include stdlib include time using name

 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
#include <iostream>
#include <stdlib.h>
#include <stdlib.h>
#include <time.h>
using namespace std; // строчка нужна для современных компиляторов, указывает область видимости, у тебя должно работать и без неё
int* create_array(int size) // функция для создания массива
{ // принимает число - размер массива, возвращает указатель на него
srand(time(NULL)); // инициируем генератор случайных числе текущим временем
int *array = new int[size]; // собственно создаём массив размера size
for (int i = 0; i < size; i++) // пробегаемся циклом по нему
{
array[i] = rand() % 50; // присваивая каждому элементу число от 0 до 50
}
return array; // возвращем указатель
}
void print_array(int *array, int size) // функция для отображения массива
{ // принимает указатель на массив и его размер
for (int i = 0; i < size; i++) // цикл перебирает все элементы массива
{
cout << array[i] << "\t"; // выводим разделяя элементы табом
}
cout << endl; // перенос строки
}
int* delete_items(int *array, int &size)
{ // принимает указатель на массив и ссылку на размер
// ссылка - позволяет менять значение переменной не только внутри функции, но и во всей программе
int newsize = size; // объявляем переменную newsize (колличество элементов нового массива) и присваеваем ей колличество элементов нашего массива
for (int i = 0; i < size; i++) // циклом перебираем элементы
{
if (array[i] % 7 == 0) { // если элемент делется на 7 без остатка
newsize = newsize - 1; // уменьшаем новый размер на 1 (т.к дальше мы этот элемент выкинем)
}
}
int *newarray = new int[newsize]; // создаём новый массив размера newsize
int j = 0; // задаём переменную j - она служит как счётчик для элементов нового массива
for (int i = 0; i < size; i++) // снова перебираем элементы
{
if (array[i] % 7 != 0) { // если элемент не кратный
newarray[j] = array[i]; // копируем его в новый массив
j += 1; // увеличиваем счётчик (номер текущего элемента нового массива)
}
// в случае если элемент кратный 7 попался - i будет не равен j, поэтому нам нужна эта переменная j
}
size = newsize; // размер массива теперь равен размеру нового массива
return newarray; // возвращаем новый массив
}
int* add_items(int *array, int &size)
{ // функция аналогична delete_items
int newsize = size;
for (int i = 0; i < size; i++)
{
if (array[i] % 2 != 0) { // увеличиваем размер на колличество нечётных элементов
newsize = newsize + 1;
}
}
int *newarray = new int[newsize];
int j = 0;
for (int i = 0; i < newsize; i++) // цикл от 0 до newsize
{
newarray[i] = array[j]; // копируем элемент из старого массива в новый
if (array[j] % 2 != 0) {
i += 1; // увеличиваем счётчик
newarray[i] = 0; // добавляем элемент
}
j += 1;
}
size = newsize;
return newarray;
}
int main(int argc, char** argv) {
int size; // объявляем переменную, содержащую колличество элементов массива
cout << "Enter size of array: "; // просим ввести число элементов
cin >> size; // ну и считываем его в size
int *array = create_array(size); // создаём указатель array и присваиваем ему результат функции create_array. Переменную size передаём в качестве аргумента функции. Саму ф-цию смотри выше.
print_array(array, size); // вызываем функцию print_array (см. выше) передавая в качестве аргументов указатель array на наш массив и его размер size
array = delete_items(array, size); // указателю array присваиваем результат delete_items, которая удалит все элементы кратные 7
print_array(array, size); // снова выведем массив
array = add_items(array, size); // так же добавляем элементы
print_array(array, size); // ещё раз выведем массив
return (EXIT_SUCCESS);
}