0 / 0 / 0
Регистрация: 23.10.2018
Сообщений: 1
1

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

23.10.2018, 15:59. Показов 3547. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Задача такова: сгенерировать массив и развернуть все его положительные последовательности. Например, если массив - "1, -1, 2, 3, 4, -5" он должен стать "1, -1, 4, 3, 2, -5". Я реализовал перебор, но после многих попыток всё еще не получается сделать это нормально, вылезают лишние числа и т.п. Прошу подсказать как мне выполнить это задание. На лишние библиотеки
C++ (Qt)
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
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
using namespace std;
int Arr[100];
int main()
{
srand(time(NULL));
int n;
int sequenceStart;
int sequenceEnd;
int currentElement = 0;
printf("Starting array\n");
for (n = 0; n < 100; Arr[n++] = (rand() % 101) - 50);
for (n = 0; n < 100; printf("%3d ", Arr[n++]));
putchar('\n');
for (n = 0; n < 100; n++)
{
if (Arr[n] > 0)
{
sequenceStart = n;
sequenceEnd = sequenceStart;
while (currentElement > 0)
{
n++;
if (n < 100)
{
currentElement = Arr[n];
if (currentElement > 0)
{
sequenceEnd++;
}
 
}
else
break;
}
}
}
system("pause");
return 0;
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.10.2018, 15:59
Ответы с готовыми решениями:

Во всех последовательностях массива положительных чисел изменить порядок элементов на противоположный
Помогите с задачей !!! в с++ Создать массив целых чисел и заполнить его случайными значениями....

Во всех последовательностях положительных чисел изменить порядок эл-ов на противоположный.
Размерность массива=100 Диапазон значений -50 до -50 Во всех последовательностях положительных...

Во всех последовательностях положительных чисел изменить порядок элементов на противоположный
Во всех последовательностях положительных чисел изменить порядок элементов на противоположный. С...

Во всех последовательностях положительных чисел изменить порядок элементов на противоположный
Помогите с данным заданием Во всех последовательностях положительных чисел изменить порядок...

1
1505 / 968 / 812
Регистрация: 30.04.2016
Сообщений: 3,334
23.10.2018, 21:42 2
Лучший ответ Сообщение было отмечено QualityByte как решение

Решение

QualityByte, здравствуйте! Вот пока такой вариант с применением стека:

C++
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
#include <iostream> 
#include <stack>
 
    using namespace std;
 
int main() {
    int n;
    cout << "Enter an array size:\n";
    cout << "n = ";
    cin >> n;
    int* arr = new int[n+1];
    stack<int> stack;
    cout << "Enter an array:\n";
    for (int i = 0; i < n; i++) {
        cin >> arr[i];
    }
    cout << "Output of the program:\n";
    arr[n] = -1;
    for (int i = 0; i < n + 1; i++) {
        if (arr[i] < 0 || i == n) {
            while (!stack.empty()) {
                cout << stack.top() << " ";
                stack.pop();
            }
            if (i != n)
                cout << arr[i] << " ";
        } else {
            stack.push(arr[i]);
        }
    }
    delete [] arr;
    system("pause");
    return 0;
}
Добавлено через 14 минут
QualityByte, вот еще вариант:

C++
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
#include <iostream>
#include <algorithm>
 
    using namespace std;
 
int main() {
    int n, k, t;
    cout << "Enter an array size:\n";
    cout << "n = ";
    cin >> n;
    int* arr = new int[n+1];
    cout << "Enter an array:\n";
    for (int i = 0; i < n; i++) {
        cin >> arr[i];
    }
    arr[n] = -1;
    k = t = 0;
    for (int i = t; i < n + 1; i++) {
        if ((i + 1) < n + 1 && arr[i] >= 0) {
            k++;
        } else {
            reverse(arr + i - k, arr + i);
            t = k;
            k = 0;
        }
    }
    cout << "Output of the program:\n";
    for (int i = 0; i < n; i++) {
        cout << arr[i] << " ";
    }
    delete [] arr;
    system("pause");
    return 0;
}
P.S. Здесь я использую массив, заведомо на 1 больше чем заданный, что не очень хорошо. Если смогу, сделаю все как положено и вам покажу.
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.10.2018, 21:42
Помогаю со студенческими работами здесь

Массив: во всех последовательностях положительных чисел изменить порядок элементов на противоположный (DevC++)
Помогите решить: В массиве размерностью от -50 до 50 во всех последовательностях позитивных чисел...

Во всех последовательностях положительных чисел изменить порядок элементов на противоположный
Размерность массива 100 диапазон от -50 до 50 и вот само задание Во всех последовательностях...

Дан одномерный массив целых чисел. Изменить порядок расположения всех элементов на противоположный.
Дан одномерный массив целых чисел. Изменить порядок расположения всех элементов на противоположный.

Используя указатель на массив целых чисел, изменить порядок следования элементов массива на противоположный
Доброго времени суток, подскажите, пожалуйста,что в моем коде неправильно. #include &lt;iostream&gt;...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru