Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 02.11.2023
Сообщений: 1
1

Целочисленный массива. Увеличить все серии наименьшей длины на один элемент, не используя vector

02.11.2023, 11:16. Показов 979. Ответов 1
Метки c++ (Все метки)

Author24 — интернет-сервис помощи студентам
Требуется помощь с написанием программы есть такой код, но он преобразует только первую серию вне зависимости от длины

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
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
#include <iostream> 
#include <cmath>
#include <iomanip>
#include <algorithm>
 
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "ru");
    int n,
        count, // счетчик длины серии
        x = 0, // счетчик кол-во серий
        y;
    int count2 = 0;
    cout << "Введите n: ";
 
    cin >> n;
 
    int* a; // начальный массив 
    int* find; // новый массив, который помогает запомнить серии
    a = new int[n];
    find = new int[n];
    int min = n; // минимальное значение серии
 
    // ввод массива 
    for (int i = 0; i < n; i++)
    {
        cin >> a[i];
        find[i] = 0;
    }
    // ищем максимальную серию 
    for (int i = 0; i < n - 1; i++)
    {
        count = 1;
        count2 = 1;
        for (int j = i + 1; j < n; j++)
        {
            if (a[i] == a[j])
            {
                count++;
            }
            else
            {
                break;
            }
        }
        if (count < min)
        {
            min = count;
            find[i] = min;
            count2 = 1;
            x = 1;
        }
        else if (count == min)
        {
            find[i] = min;
            x++;
            count2++;
        }
        i += (count - 1);
    }
 
    // преобразуем массив 
    int m = n + x;
 
    for (int i = n - 1, j = m - 1; i >= 0; i--)
    {
        y = 0;
 
        for (int k = i - 1; k >= 0; k--)
        {
            if (a[i] == a[k])
            {
                y++;
            }
            else
            {
                break;
            }
        }
 
        if (find[i - y] == min)
        {
            for (int k = 0; k <= y; k++, j--)
            {
                a[j] = a[i];
            }
            a[j--] = a[i];
            i -= y;
        }
        else
        {
            a[j--] = a[i];
        }
    }
 
    // выводим на экран, что получилось 
 
    for (int i = 0; i < m; i++)
    {
        cout << a[i] << " ";
    }
 
    return 0;
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
02.11.2023, 11:16
Ответы с готовыми решениями:

Задан целочисленный массив размера N. Увеличить все серии минимальной длины на один элемент
Разработать программу согласно варианту задания. Ввод и вывод массива осуществлять в одну...

Увеличить все серии массива наибольшей длины на один элемент
Дан целочисленный массив размера N. Преобразовать массив, увеличив все его серии наибольшей длины...

В массиве увеличить все серии минимальной длины на один элемент
Разработка и отладка алгоритмов и программ обработки массивов Задан целочисленный массив размера...

Преобразовать массив увеличив все серии наибольшей длины на один элемент
Решите задачу с использованием функций ввода, вывода и обработки массивов. Дан массив, состоящий...

Преобразовать массив, увеличив все его серии наибольшей длины на один элемент
У меня вот такое задание: Дан целочисленный массив размера N. Преобразовать массив,увеличив все...

1
 Аватар для igorrr37
2862 / 2010 / 988
Регистрация: 21.12.2010
Сообщений: 3,716
Записей в блоге: 15
02.11.2023, 13:39 2
Удобней сперва написать с векторами а уж потом убрать их
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
#include <iostream>
#include <algorithm>
#include <vector>
#include <climits>
 
 
int main()
{
    std::vector<int> vct{0,0,0,1,1,2,2,2,3,3,4,4,4}, vind(vct.size(), 0), vres;
    int icur{};
    ++vind[0];
    for(int i = 1; i < vct.size(); ++i)
    {
        if (vct[i] != vct[i - 1])
        {
            icur = i;
        }
        ++vind[icur];
    }
    std::replace(vind.begin(), vind.end(), 0, INT_MAX);
    int minCnt = *std::min_element(vind.begin(), vind.end());
    for (int i = 0; i < vind.size(); ++i)
    {
        if (vind[i] == INT_MAX)
            continue;
        vres.insert(vres.end(), (vind[i] == minCnt ? vind[i] + 1 : vind[i]), vct[i]);
    }
    for (auto val : vres)
    {
        std::cout << val << " ";
    }
}
0
02.11.2023, 13:39
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
02.11.2023, 13:39
Помогаю со студенческими работами здесь

Преобразовать массив, увеличив все его серии наибольшей длины на один элемент
Дан целочисленный массив размера N. Преобразовать массив, увеличив все его серии наибольшей длины...

Преобразовать массив, увеличив все его серии наибольшей длины на один элемент
Вот код программы: #include &lt;iostream&gt; #include &lt;cmath&gt; #include &lt;algorithm&gt; int Max(int...

Преобразовать массив, увеличив все его серии наибольшей длины на один элемент
Ребят помогите с таким задании: Дан целочисленный массив размера N. Преобразовать массив,увеличив...

Преобразовать массив, увеличив все его серии наибольшей длины на один элемент
4)Дан целочисленный массив размера N. Преобразовать массив, увеличив все его серии наибольшей...

Преобразовать массив, увеличив все его серии наибольшей длины на один элемент
Дан целочисленный массив размера N. Преобразовать массив, увеличив все его серии наибольшей длины...

Преобразовать массив, увеличив все его серии наибольшей длины на один элемент
Дан целочисленный массив размера N. Преобразовать массив, увеличив все его серии наибольшей длины...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Компьютер как универсальное устройство для работы с информацией
hw_wired 28.01.2025
Введение в устройство компьютера Компьютер представляет собой универсальное электронное устройство, предназначенное для автоматической обработки информации. В современном мире компьютер стал. . .
Информация и информационные процессы
hw_wired 28.01.2025
Понятие информации и ее виды В современном мире информация является одним из фундаментальных понятий, пронизывающих все сферы человеческой деятельности. Под информацией понимают любые сведения об. . .
Алгоритмика
hw_wired 28.01.2025
Введение: Основы алгоритмики и её роль в информатике В современном мире программирование и алгоритмическое мышление стали неотъемлемой частью образования и профессиональной деятельности. . . .
Информационное моделирование
hw_wired 28.01.2025
Введение в информационное моделирование В современном мире информационное моделирование стало неотъемлемой частью научной, образовательной и профессиональной деятельности. Это мощный инструмент. . .
Объекты и их имена
hw_wired 28.01.2025
Введение: Основы объектного подхода и их роль в информатике В современном мире информационных технологий объектный подход стал фундаментальным принципом организации и обработки информации. Этот. . .
Элементы алгоритмизации
hw_wired 28.01.2025
Основы алгоритмизации В современном мире алгоритмы играют фундаментальную роль в развитии информационных технологий и программирования. Понимание основ алгоритмизации является ключевым элементом в. . .
Человек и информация
hw_wired 28.01.2025
Введение: роль информации в познании мира В современном мире информация играет фундаментальную роль в процессе познания окружающей действительности. Она представляет собой совокупность сведений об. . .
Компьютер и информация
hw_wired 28.01.2025
Эволюция вычислительных машин История развития вычислительной техники начинается задолго до появления первых электронных устройств. Человечество всегда стремилось упростить процесс вычислений и. . .
Информационные технологии
hw_wired 28.01.2025
Введение в современные технологии работы с информацией В современном мире информационные технологии стали неотъемлемой частью практически всех сфер человеческой деятельности. Они существенно. . .
Информация вокруг нас
hw_wired 28.01.2025
Основные понятия информации В современном мире понятие информации является фундаментальным и охватывает практически все сферы человеческой деятельности. Информация представляет собой совокупность. . .
Компьютер для начинающих
hw_wired 28.01.2025
Введение в мир компьютерных технологий В современном мире информация стала одним из важнейших ресурсов человечества, определяющим развитие общества и технологий. Наша жизнь неразрывно связана с. . .
[golang] 189. Rotate Array
alhaos 28.01.2025
Повороты рукоятки, целочисленный слайс нужно сдвинуть на целое положительное число. Мне очень нравится решение на GO / / https:/ / leetcode. com/ studyplan/ top-interview-150/ package topInterview . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru