Структуры данных: массивы (C++)

Материал из Информационная безопасностя
Перейти к навигации Перейти к поиску

Массивы

Задачи

Вывод всех целых чисел массива через пробел циклом For

1 #include <iostream>
2 
3 int main() {
4     int a[] {1, 5, 8, 3, 9, 23, 15};
5     for (auto x : a)
6     {
7         std::cout << x << ' ';
8     }
9 }

Сделать массив из первых n нечётных чисел

 1 #include <iostream>
 2 
 3 int main() {
 4     const int size = 10;
 5     int a[size] = {0};
 6 
 7     for (int i = 0; i < size; ++i) {
 8         a[i] = (i+1)*2 - 1;
 9         std::cout << a[i] << " ";
10     }
11 }

Сгенерировать массив случайных чисел

 1 #include <iostream>
 2 #include <random>
 3 
 4 int main() {
 5     const int size = 10;
 6     int a[size];
 7 
 8     std::random_device rd;
 9     std::mt19937 mt(rd());
10     std::uniform_real_distribution<double> dist(-100, 100);
11 
12     for (int & i : a) {
13         i = dist(mt);
14         std::cout << i << " ";
15     }
16 }

Вывести все содержащиеся в массиве нечетные числа в порядке возрастания их индексов, а также их количество

 1 #include <iostream>
 2 #include <random>
 3 
 4 int main() {
 5     const int size = 10;
 6     int a[size];
 7 
 8     std::random_device rd;
 9     std::mt19937 mt(rd());
10     std::uniform_real_distribution<double> dist(0, 100);
11 
12     for (int & i : a) {
13         i = trunc(dist(mt));
14         std::cout << i << " ";
15     }
16     std::cout << std::endl;
17 
18     int count = 0;
19     for (int i : a) {
20         if (i % 2 == 1) {
21             std::cout << i << " ";
22             count++;
23         }
24     }
25     std::cout << std::endl;
26     std::cout << count << std::endl;
27 }

Разделить массив на два: на положительные+ноль и отрицательные числа

 1 #include <iostream>
 2 #include <random>
 3 
 4 int main() {
 5     const int size = 10;
 6     std::vector<int> vector;
 7     std::vector<int> pos;
 8     std::vector<int> neg;
 9 
10     std::random_device rd;
11     std::mt19937 mt(rd());
12     std::uniform_real_distribution<double> dist(-100, 100);
13 
14     for (int i = 0; i < size; ++i) {
15         int num = trunc(dist(mt));
16         vector.push_back(num);
17         std::cout << num << " ";
18     }
19     std::cout << std::endl;
20 
21     std::copy_if (vector.begin(), vector.end(), std::back_inserter(pos), [](int i){return i >= 0;} );
22     std::copy_if (vector.begin(), vector.end(), std::back_inserter(neg), [](int i){return i < 0;} );
23 
24     for (const auto i: pos)
25         std::cout << i << ' ';
26     std::cout << std::endl;
27 
28     for (const auto i: neg)
29         std::cout << i << ' ';
30     std::cout << std::endl;
31 }