Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- #include <ctime>
- using namespace std;
- int main() {
- // Рандом
- srand(time(NULL));
- int n, positiveNumbers, sumAfterLastZero;
- do {
- cout << "Число элементов массива: ";
- cin >> n;
- } while (n < 1);
- vector <int> arr(n);
- vector <int> tmpArrayLeft, tmpArrayRight;
- // Заполнение массива случайными числами от -50 до 50
- for (int i = 0; i < n; i++) {
- arr[i] = rand() % 101 - 50;
- }
- // В массиве гарантированно встречается ноль
- arr[rand() % n] = 0;
- // Вывод массива
- cout << "\nМассив:\n";
- for (auto elem : arr) {
- cout << elem << " ";
- }
- // Подсчёт числа положительных чисел в массиве
- positiveNumbers = 0;
- for (auto elem : arr) {
- if (elem > 0) {
- positiveNumbers++;
- }
- }
- cout << "\n\nПоложительных чисел в массиве: " << positiveNumbers;
- // Подсчёт суммы чисел после последнего нуля (движемся с конца массива)
- sumAfterLastZero = 0;
- for (int i = n - 1; i >= 0; i--) {
- if (arr[i] == 0) {
- break;
- }
- else {
- sumAfterLastZero += arr[i];
- }
- }
- cout << "\n\nСумма чисел после последнего нуля: " << sumAfterLastZero;
- // Разделение массива на 2 подмассива (не превосходящие и превосходящие единицу)
- for (auto elem : arr) {
- if (elem <= 1) {
- tmpArrayLeft.push_back(elem);
- }
- else {
- tmpArrayRight.push_back(elem);
- }
- }
- // Слияние подмассивов в массив с необходимым порядком элементов
- for (int i = 0; i < tmpArrayLeft.size(); i++) {
- arr[i] = tmpArrayLeft[i];
- }
- for (int i = tmpArrayLeft.size(); i < n; i++) {
- arr[i] = tmpArrayRight[i - tmpArrayLeft.size()];
- }
- // Вывод нового массива
- cout << "\n\nПреобразованный массив:\n";
- for (auto elem : arr) {
- cout << elem << " ";
- }
- return 0;
- }
Add Comment
Please, Sign In to add comment