Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
2 / 2 / 0
Регистрация: 26.02.2017
Сообщений: 96
1

Удалить из массива все серии, длина которых меньше k

08.09.2019, 18:55. Показов 634. Ответов 1
Метки нет (Все метки)

Помогите пожалуйста с программой.
"Удалить из массива все серии, длина которых меньше k."

Вот код для удаления серии, длинна которых больше k.
Как его преобразовать для моего задания?

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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
#include <iostream>
#include <ctime>
#include <conio.h>
using namespace std;
void gen(int* arr, int f, int l, int r) {//Функция генерации массива
    for (int i = 0; i < f; i++) {
        arr[i] = l + rand() % (r - l + 1);
    }
}
void ArCout(int* arr, int f) {//Функция вывода массива
    cout << "Массив: ";
    for (int i = 0; i < f - 1; i++) {
        if (arr[i] != -842150451) {
            cout << arr[i] << " ";
        }
    }
    cout << endl;
}
void MasChange(int f, int* ar, int* mas, int l, int* tmp, int& g) {//Функция преобразования массива
    int k = 0;
    for (int i = 1; i < f; i++) {
        if (mas[i] == mas[i - 1]) {
            ar[k]++;
        }
        else {
            k++;
        }
    }
    int n = 0;
    for (int i = 0; i <= k; i++) {
        if (ar[i] > l) {
            tmp[g] = tmp[g + ar[i]];
            g++;
        }
        else {
            for (int j = 0; j < ar[i]; j++) {
                tmp[g] = mas[j + n];
                g++;
            }
        }
        n += ar[i];
    }
}
int main() {
    setlocale(LC_ALL, "RUSSIAN");
    srand(time(NULL));
    int n, l, left, right;
    int g = 0;//переменная для подсчета количества цифр в temp массиве
    cout << "Введите количество элементов массива: ";
    cin >> n;
    if (n <= 0) {
        cout << "Error!";
        _getch();
        exit(0);
    }
    cout << "Введите длину серии: ";
    cin >> l;
    if (l <= 0) {
        cout << "Error!";
        _getch();
        exit(0);
    }
    cout << "Введите левый и правый границы массива: ";
    cin >> left >> right;
    if (left > right) {
        cout << "Error!";
        _getch();
        exit(0);
    }
    int* arg = new int[n];//Основной массив
    int* sc = new int[n];//Массив для подсчета размерности серий чисел
    int* temp = new int[n];//Дополнительный массив, в котором будет записан преобразованный массив
    for (int i = 0; i < n; i++) {///Приравнивание каждому элементу массива числа 1(минимальная размерность серии чисел)
        sc[i] = 1;
    }
    gen(arg, n, left, right);
    ArCout(arg, n);
    MasChange(n, sc, arg, l, temp, g);
    ArCout(temp, g);
    _getch();
 
}
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.09.2019, 18:55
Ответы с готовыми решениями:

Решение уравнения методом половинного деления
Помогите пожалуйста с программой. Есть код для решения методом половинного деления для данного...

Удалить из массива все серии длина которых меньше заданной
Дан массив, состоящий из n элементов. Назовем серией группу подряд идущих одинаковых элементов, а...

Удалить из массива все серии, длина которых больше k
2. Дано число k и целочисленный массив размера N . Удалить из массива все серии, длина которых...

Удалить из строки все слова, длина которых меньше пяти символов
Доброго времени суток, условие в заголовке. Возможно ли добавить символ к строке? #include...

1
2 / 2 / 0
Регистрация: 26.02.2017
Сообщений: 96
09.09.2019, 21:07  [ТС] 2
Назовем серией группу подряд идущих одинаковых элементов, а длиной серии – количество этих элементов (длина серии может быть равна 1).
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.09.2019, 21:07

Превратить массив целых чисел размерности N, удалив из массива все серии, длина которых больше k
Помогите плиз Превратить массив целых чисел размерности N, удалив из массива все серии, длина...

Удалить из строки все слова, длина которых меньше пяти символов. В строке не используются знаки препинания
Ребят , не могу решить , помогите пожалуйста. #include &quot;pch.h&quot; #include &lt;Windows.h&gt; #include...

задан текст. удалить из нее все слова, длина которых четная (создать новый массив, оставив все слова, длина которых нечетная)
задан текст. удалить из нее все слова, длина которых четная (создать новый массив, оставив все...

Из заданной строки удалить слова, длина которых меньше указанной.
Помогите написать программу которая из заданной символьной строки удаляет слова длина которых...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.