Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
dero
1 / 1 / 1
Регистрация: 12.10.2012
Сообщений: 41
#1

Каждую серию элементов в массиве увеличить на 1 элемент - C++

16.11.2013, 22:00. Просмотров 728. Ответов 6
Метки нет (Все метки)

Такая задача на С++. В каждую серию элементов добавить еще один такой же элемент. Помогите решить
все что я смогу написать:
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include "conio.h"
#include "stdio.h"
#include <iostream>
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "Russian");
    
    int N, mass[50];
    printf("Размер массива: "); scanf("%d", &N);
 
    for (int i = 1; i <= N; i++)
    {
        printf("a[%d]", i);
        scanf("%d", &mass[i]);
    }
 
    for (int i = 1; i <= N; i++)
    {
        if (mass[i + 1] == mass[i]) // серия то может быть и из 3+ эелементов, не знаю как дальше решить
    }
}


Добавлено через 5 часов 31 минуту
все еще нужна помощь, подскажите хотя бы как найти серию элементов в массиве
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.11.2013, 22:00
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Каждую серию элементов в массиве увеличить на 1 элемент (C++):

Преобразовать массив, уменьшив каждую его серию на один элемент. - C++
Дан целочисленный массив размера N, содержащий по крайней мере одну серию, длина которой больше 1. Преобразовать массив, уменьшив каждую...

Заменить каждую серию, длина которой больше k, на один наименьший элемент массива - C++
3. Дан массив, состоящий из n элементов. Назовем серией группу подряд идущих одинаковых элементов, а длиной серии – количество этих...

Заменить каждую серию массива, длина которой равна L, на один элемент с нулевым значением - C++
нужно решение Дано целое число L (&gt;0) и целочисленный массив размера N. Заме- нить каждую серию массива, длина которой равна L, на...

Заменить каждую серию массива, длина которой равна L, на один элемент с нулевым значением - C++
Здравствуйте.Дано целое число L (&gt; 0) и целочисленный массив размера N. Заменить каждую серию массива, длина которой равна L, на один...

Дан целочисленный массив размера N. Преобразовать массив, увеличив каждую его серию на один элемент - C++
1. Дан целочисленный массив размера N. Преобразовать массив, увеличив каждую его серию на один элемент. (Серия - группа подряд идущих...

Дан целочисленный массив размера N. Преобразовать массив, увеличив каждую его серию на один элемент - C++
Помогите преобразовать код из языка С# в С++. Занимался разбором задачи на языке С++. Вот условие задачи: Дан целочисленный массив...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
dzrkot
zzzZZZ...
519 / 349 / 53
Регистрация: 11.09.2013
Сообщений: 1,997
16.11.2013, 22:07 #2
серию?....
dero
1 / 1 / 1
Регистрация: 12.10.2012
Сообщений: 41
17.11.2013, 00:46  [ТС] #3
серия элементов - это 2+ подряд идущих эелемента
alsav22
5417 / 4813 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
17.11.2013, 00:56 #4
Цитата Сообщение от dero Посмотреть сообщение
серия элементов - это 2+ подряд идущих эелемента
Одинаковых элемента?
dero
1 / 1 / 1
Регистрация: 12.10.2012
Сообщений: 41
17.11.2013, 01:36  [ТС] #5
Цитата Сообщение от alsav22 Посмотреть сообщение
Одинаковых элемента?
да, конечно. Забыл упомянуть
MrGluck
Модератор
Эксперт CЭксперт С++
7210 / 4376 / 638
Регистрация: 29.11.2010
Сообщений: 11,887
17.11.2013, 05:23 #6
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
#include <iostream>
#include <list>
 
int main()
{
    std::list<int> l = {1, 2, 2, 3, 4, 4, 5, 5, 5, 5};
    bool flag = false;
    auto it = l.begin(), last = l.begin();
    for (++it; it != l.end(); ++it, ++last)
    {
        if (*it == *last)
            flag = true;
        else
        {
            if (flag == true)
                l.insert(last, *last);
            flag = false;
        }
    }
    if (*l.rbegin() == *last)
        l.push_back(*last);
 
    for (auto& x: l)
        std::cout << x << " ";
}
alsav22
5417 / 4813 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
17.11.2013, 08:40 #7
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
#include <iostream>
using namespace std;
 
int main()
{
    const int N = 10;
    
    int arr [N] = {1, 1, 2, 2, 3, 4, 5, 6, 6, 6};
    int c = 0; // количество серий
    for (int i = 0; i < N - 1; i++)
    {
        if (arr[i] == arr[i + 1])
        {
            ++c;
            while (i < N - 1 && arr[i] == arr[i + 1]) ++i;
            --i;
        }
    }
    //cout << c << endl;
    if (c) // если серии есть
    {
        int N2 = N + c;
        int *arr2 = new int[N2];
    
        for (int i = 0, j = 0; j < N2; ++i, ++j)
        {
            if (c)
            {
                if (arr[i] == arr[i + 1])
                {
                    arr2[j] = arr[i];
                    ++j;
                    --c;
                    if (j == N2) break;
                    while (i < N - 2 && arr[i + 1] == arr[i + 2])
                    {
                        arr2[j] = arr[i + 1];
                        ++i;
                        ++j;
                    }
                }
            }
            arr2[j] = arr[i];
        }
 
        for (int i = 0; i < N2; i++) // вывод нового массива
        {
            cout << arr2[i] << ' ';
        }
        delete [] arr2;
    }
    else // если серий нет
    {
        for (int i = 0; i < N; i++) // вывод старого массива
        {
            cout << arr[i] << ' ';
        }
    }
 
    cin.get();
    return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.11.2013, 08:40
Привет! Вот еще темы с ответами:

В одномерном массиве серию равных элементом заменить на max элемент массива - C++
В одномерном массиве группу, содержащую наибольшее число равных элементов, заменить на максимальный элемент этого массива. Элементы массива...

Найти в массиве наибольшую серию подряд идущих элементов, расположенных по возрастанию - C++
В данном массиве найдите наибольшую серию подряд идущих элементов, расположенных по возрастанию.

В массиве найти самую маленькую серию подряд стоящих нечетных элементов... (Как доработать программу?) - C++
Помогите доработать программу В заданном массиве целых чисел найти самую маленькую серию подряд стоящих нечетных элементов. Удалить из...

В заданном массиве целых чисел найти самую большую серию подряд стоящих четных элементов. - C++
В заданном массиве целых чисел найти самую большую серию подряд стоящих четных элементов. Очень нужно. Заранее спасибо!


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
17.11.2013, 08:40
Ответ Создать тему
Опции темы

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