Структуры данных: массивы (C++): различия между версиями
Перейти к навигации
Перейти к поиску
(Новая страница: «== Массивы == * [https://habr.com/ru/post/495444/ Массивы (Хабр)] * [https://docs.microsoft.com/ru-ru/cpp/cpp/arrays-cpp Массивы (Microso...») |
|||
Строка 1: | Строка 1: | ||
+ | {{TOCRight}} | ||
== Массивы == | == Массивы == | ||
* [https://habr.com/ru/post/495444/ Массивы (Хабр)] | * [https://habr.com/ru/post/495444/ Массивы (Хабр)] | ||
* [https://docs.microsoft.com/ru-ru/cpp/cpp/arrays-cpp Массивы (Microsoft)] | * [https://docs.microsoft.com/ru-ru/cpp/cpp/arrays-cpp Массивы (Microsoft)] | ||
+ | |||
+ | == Задачи == | ||
+ | === Вывод всех целых чисел массива через пробел циклом For === | ||
+ | <syntaxhighlight lang="C++" line> | ||
+ | #include <iostream> | ||
+ | |||
+ | int main() { | ||
+ | int a[] {1, 5, 8, 3, 9, 23, 15}; | ||
+ | for (auto x : a) | ||
+ | { | ||
+ | std::cout << x << ' '; | ||
+ | } | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | === Сделать массив из первых n нечётных чисел === | ||
+ | <syntaxhighlight lang="C++" line> | ||
+ | #include <iostream> | ||
+ | |||
+ | int main() { | ||
+ | const int size = 10; | ||
+ | int a[size] = {0}; | ||
+ | |||
+ | for (int i = 0; i < size; ++i) { | ||
+ | a[i] = (i+1)*2 - 1; | ||
+ | std::cout << a[i] << " "; | ||
+ | } | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | === Сгенерировать массив случайных чисел === | ||
+ | <syntaxhighlight lang="C++" line> | ||
+ | #include <iostream> | ||
+ | #include <random> | ||
+ | |||
+ | int main() { | ||
+ | const int size = 10; | ||
+ | int a[size]; | ||
+ | |||
+ | std::random_device rd; | ||
+ | std::mt19937 mt(rd()); | ||
+ | std::uniform_real_distribution<double> dist(-100, 100); | ||
+ | |||
+ | for (int & i : a) { | ||
+ | i = dist(mt); | ||
+ | std::cout << i << " "; | ||
+ | } | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | === Вывести все содержащиеся в массиве нечетные числа в порядке возрастания их индексов, а также их количество === | ||
+ | <syntaxhighlight lang="C++" line> | ||
+ | #include <iostream> | ||
+ | #include <random> | ||
+ | |||
+ | int main() { | ||
+ | const int size = 10; | ||
+ | int a[size]; | ||
+ | |||
+ | std::random_device rd; | ||
+ | std::mt19937 mt(rd()); | ||
+ | std::uniform_real_distribution<double> dist(0, 100); | ||
+ | |||
+ | for (int & i : a) { | ||
+ | i = trunc(dist(mt)); | ||
+ | std::cout << i << " "; | ||
+ | } | ||
+ | std::cout << std::endl; | ||
+ | |||
+ | int count = 0; | ||
+ | for (int i : a) { | ||
+ | if (i % 2 == 1) { | ||
+ | std::cout << i << " "; | ||
+ | count++; | ||
+ | } | ||
+ | } | ||
+ | std::cout << std::endl; | ||
+ | std::cout << count << std::endl; | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | === Разделить массив на два: на положительные+ноль и отрицательные числа === | ||
+ | <syntaxhighlight lang="C++" line> | ||
+ | #include <iostream> | ||
+ | #include <random> | ||
+ | |||
+ | int main() { | ||
+ | const int size = 10; | ||
+ | std::vector<int> vector; | ||
+ | std::vector<int> pos; | ||
+ | std::vector<int> neg; | ||
+ | |||
+ | std::random_device rd; | ||
+ | std::mt19937 mt(rd()); | ||
+ | std::uniform_real_distribution<double> dist(-100, 100); | ||
+ | |||
+ | for (int i = 0; i < size; ++i) { | ||
+ | int num = trunc(dist(mt)); | ||
+ | vector.push_back(num); | ||
+ | std::cout << num << " "; | ||
+ | } | ||
+ | std::cout << std::endl; | ||
+ | |||
+ | std::copy_if (vector.begin(), vector.end(), std::back_inserter(pos), [](int i){return i >= 0;} ); | ||
+ | std::copy_if (vector.begin(), vector.end(), std::back_inserter(neg), [](int i){return i < 0;} ); | ||
+ | |||
+ | for (const auto i: pos) | ||
+ | std::cout << i << ' '; | ||
+ | std::cout << std::endl; | ||
+ | |||
+ | for (const auto i: neg) | ||
+ | std::cout << i << ' '; | ||
+ | std::cout << std::endl; | ||
+ | } | ||
+ | </syntaxhighlight> |
Текущая версия на 10:43, 26 июня 2021
Массивы
Задачи
Вывод всех целых чисел массива через пробел циклом 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 }