Структуры данных: массивы (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 }