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

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

Восстановить пароль Регистрация
 
dero
1 / 1 / 1
Регистрация: 12.10.2012
Сообщений: 39
16.11.2013, 22:00     Каждую серию элементов в массиве увеличить на 1 элемент #1
Такая задача на С++. В каждую серию элементов добавить еще один такой же элемент. Помогите решить
все что я смогу написать:
Кликните здесь для просмотра всего текста
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++ В массиве перевернуть каждую группу из N элементов
Преобразовать массив, уменьшив каждую его серию на один элемент. C++
C++ В заданном массиве целых чисел найти самую большую серию подряд стоящих четных элементов.
В массиве найти самую маленькую серию подряд стоящих нечетных элементов... (Как доработать программу?) C++
C++ Увеличить каждый элемент массива на величину следующего элемента в массиве
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
dzrkot
zzzZZZ...
 Аватар для dzrkot
516 / 346 / 53
Регистрация: 11.09.2013
Сообщений: 1,977
16.11.2013, 22:07     Каждую серию элементов в массиве увеличить на 1 элемент #2
серию?....
dero
1 / 1 / 1
Регистрация: 12.10.2012
Сообщений: 39
17.11.2013, 00:46  [ТС]     Каждую серию элементов в массиве увеличить на 1 элемент #3
серия элементов - это 2+ подряд идущих эелемента
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
17.11.2013, 00:56     Каждую серию элементов в массиве увеличить на 1 элемент #4
Цитата Сообщение от dero Посмотреть сообщение
серия элементов - это 2+ подряд идущих эелемента
Одинаковых элемента?
dero
1 / 1 / 1
Регистрация: 12.10.2012
Сообщений: 39
17.11.2013, 01:36  [ТС]     Каждую серию элементов в массиве увеличить на 1 элемент #5
Цитата Сообщение от alsav22 Посмотреть сообщение
Одинаковых элемента?
да, конечно. Забыл упомянуть
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4920 / 2663 / 243
Регистрация: 29.11.2010
Сообщений: 7,405
17.11.2013, 05:23     Каждую серию элементов в массиве увеличить на 1 элемент #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 << " ";
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.11.2013, 08:40     Каждую серию элементов в массиве увеличить на 1 элемент
Еще ссылки по теме:

C++ В одномерном массиве серию равных элементом заменить на max элемент массива
Заменить каждую серию массива, длина которой равна L, на один элемент с нулевым значением C++
C++ Заменить каждую серию, длина которой больше k, на один наименьший элемент массива

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

Или воспользуйтесь поиском по форуму:
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
17.11.2013, 08:40     Каждую серию элементов в массиве увеличить на 1 элемент #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;
}
Yandex
Объявления
17.11.2013, 08:40     Каждую серию элементов в массиве увеличить на 1 элемент
Ответ Создать тему
Опции темы

Текущее время: 07:07. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru