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

Удаление подряд идущих одинаковых элементов массива

18.12.2015, 21:06. Показов 12092. Ответов 15
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
В целочисленном массиве удалить все подряд идущие одинаковые элементы.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.12.2015, 21:06
Ответы с готовыми решениями:

Исключение из массива подряд идущих одинаковых элементов(нужно добавить немного кода в уже готовый)
Всем здрасьте. Нужно из массива, вводимый с клавиатуры, исключить подряд идущие одинаковые...

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

В списке из подряд идущих одинаковых элементов оставить первый
Дан список из n целых чисел а1, а2, ... , аn. Из группы подряд идущих элементов с одинаковыми...

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

15
505 / 317 / 236
Регистрация: 18.02.2013
Сообщений: 754
18.12.2015, 21:19 2
C++
1
2
3
4
5
6
7
for (int i=0;i<n-1;i++)
if (mas[i]==mas[i+1])
{
for(int j=i;j<n-2;j++)
mas[j]=mas[j+2];
n-=2;
}
0
0 / 0 / 0
Регистрация: 18.12.2015
Сообщений: 18
18.12.2015, 21:41  [ТС] 3
что-то не работает или я что-то не так сделал?

Добавлено через 33 секунды
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
using namespace std;
void main()
{int i,j, n=5 ;
double mas[5];
for(i=0; i<n; i++)
{cin>>mas[i];}
for (int i=0;i<n-1;i++)
if (mas[i]==mas[i+1])
{
for(int j=i;j<n-2;j++)
mas[j]=mas[j+2];
n-=2;
}
cout<<mas[j]<<endl;
 
system("pause");
}
0
505 / 317 / 236
Регистрация: 18.02.2013
Сообщений: 754
18.12.2015, 21:44 4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
int i,j, n=5 ;
double mas[5];
cout<<"nachalo"<<endl;
for(i=0; i<n; i++)
{cin>>mas[i];}
for (int i=0;i<n-1;i++)
if (mas[i]==mas[i+1])
{
for(int j=i;j<n-3;j++)
mas[j]=mas[j+2];
n-=2;
}
for(i=0; i<n; i++)
{cout << mas[i]<<"\t";}
0
0 / 0 / 0
Регистрация: 18.12.2015
Сообщений: 18
18.12.2015, 21:50  [ТС] 5
все равно иногда пропускает число из последовательности
0
Неэпический
18093 / 10680 / 2060
Регистрация: 27.09.2012
Сообщений: 26,881
Записей в блоге: 1
18.12.2015, 21:56 6
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include <vector>
#include <iterator>
#include <algorithm>
 
 
 
std::ostream& operator<< ( std::ostream& stream, const std::vector<int>& vec )
{
    std::copy(vec.begin(), vec.end(), std::ostream_iterator<int>(std::cout, " ")) ;
    return stream ;
}
 
 
 
int main()
{
    std::vector<int> vec(std::istream_iterator<int>(std::cin), (std::istream_iterator<int>())) ;
    std::cout << "Source: " << vec << std::endl ;
    vec.erase(std::unique(vec.begin(), vec.end()), vec.end()) ;
    std::cout << "Result: " << vec << std::endl ;
}
http://rextester.com/XSKIH23704
0
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
18.12.2015, 22:20 7
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <ctime>
#include <cstdlib>
#include <iostream>
 
int main()
{
    srand(time(0));
    const int N = 20;
    int Arr[20];
    for (auto i=0; i<N; i++)
    {
        Arr[i] = rand()%10;
        cout << Arr[i] << "   ";
    }
 
    int count = 0;
    for (auto i=1; i<=N; i++)   if (Arr[i] != Arr[i-1]) Arr[count++] = Arr[i-1];
 
 
    cout << '\n';
    for (auto i=0; i<count; i++) cout << Arr[i] << "   ";
}
0
0 / 0 / 0
Регистрация: 18.12.2015
Сообщений: 18
18.12.2015, 22:24  [ТС] 8
незнаю почему так, но ничего из этого не работает правильно..
0
505 / 317 / 236
Регистрация: 18.02.2013
Сообщений: 754
18.12.2015, 22:29 9
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
#include "conio.h"
#include "stdio.h"
#include "math.h"
#include "stdlib.h"
#include <iostream>
using namespace std;
int main()
{int i,j, n=5 ;
double mas[5];
for(i=0; i<n; i++)
{cin>>mas[i];}
for (int i=0;i<n-1;i++)
if (mas[i]==mas[i+1])
{
for(int j=i;j<n-2;j++)
mas[j]=mas[j+2];
n-=2;
i-=2;
}
for(i=0; i<n; i++)
{cout << mas[i]<<"\t";}
 
//system("pause");
}
0
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
18.12.2015, 22:35 10
phonix, А как должно работать?
0
0 / 0 / 0
Регистрация: 18.12.2015
Сообщений: 18
18.12.2015, 22:52  [ТС] 11
у тебя оставляет 1 число из последовательности

Добавлено через 3 минуты
olya7, а у тебя если вводить например 5 5 5 6 7, ответом будет 5 6 7, а должен быть 6 7
0
505 / 317 / 236
Регистрация: 18.02.2013
Сообщений: 754
18.12.2015, 23:04 12
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
#include "conio.h"
#include "stdio.h"
#include "math.h"
#include "stdlib.h"
#include <iostream>
using namespace std;
int main()
{int i,j, n=5 ;
double mas[5];
for(i=0; i<n; i++)
{cin>>mas[i];}
for (int i=0;i<n-1;i++)
if (mas[i]==mas[i+1])
{
    int sch=1;
    while(mas[i+sch]==mas[i]) sch++;
    for(int j=i;j<n-1;j++)
        mas[j]=mas[j+sch];
    n-=sch;
 
}
for(i=0; i<n; i++)
{cout << mas[i]<<"\t";}
 
//system("pause");
}
0
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
18.12.2015, 23:07 13
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
#include <ctime>
#include <cstdlib>
#include <iostream>
 
using namespace std;
 
int main()
{
    srand(time(0));
    const int N = 20;
    int Arr[20];
    for (auto i=0; i<N; i++)
    {
        Arr[i] = rand()%5;
        cout << Arr[i] << "   ";
    }
 
   int count = 0;
    for (auto i=1; i<=N; i++){
            if (Arr[i] != Arr[i-1]) Arr[count++] = Arr[i-1];
            else while ( (i<=N) && (Arr[i] == Arr[i-1])) i++;
    }
 
 
    cout << '\n';
    for (auto i=0; i<count; i++) cout << Arr[i] << "   ";
 
}
0
0 / 0 / 0
Регистрация: 18.12.2015
Сообщений: 18
18.12.2015, 23:09  [ТС] 14
olya7, теперь работает! спасибо большое!
0
9 / 9 / 0
Регистрация: 22.01.2012
Сообщений: 59
19.12.2015, 02:33 15
При помощи stl:
C++
1
v.resize(std::unique(v.begin(), v.end()) - v.begin());
0
838 / 641 / 940
Регистрация: 26.06.2015
Сообщений: 1,409
19.12.2015, 14:15 16
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>
 
template<typename T>
size_t array_delrep(T* a, size_t n){
    size_t p, i, j, h = n, u = (n > 0) ? n - 1 : n;
    i = 0;
    while((i < u) && (a[i] != a[i + 1]))
        ++i;
 
    for(j = i; j < u; a[i] = a[j]){
        if((a[j] != a[j + 1]))
            ++i;
        else {
            p  = j;
            while((p < h) && (a[p] == a[j]))
                ++p;
            n -= p - j;
            j  = p;
            continue;
        }
        ++j;
    }
    return n;
}
 
int main(void){
    int   a[] = { 0, 0, 0, 0, 1, 1, 1, 3, 2, 2, 4, 4, 5, 6, 6, 7, 9, 9, 9, 9 };
    size_t  n = sizeof(a)/sizeof(a[0]);
 
    n = array_delrep(a, n);
    for(size_t i = 0; i < n; ++i)
        std::cout << a[i] << ' ';
    return 0;
}
Пример работы кода
0
19.12.2015, 14:15
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.12.2015, 14:15
Помогаю со студенческими работами здесь

Из группы одинаковых элементов, идущих подряд, оставить первый
Здравствуйте, уже несколько часов сижу над этой задачей, но просто не могу разобраться, возможно я...

Найти в массиве наибольшее число подряд идущих одинаковых элементов
#include&lt;stdio.h&gt; #include&lt;stdlib.h&gt; #include &lt;iostream&gt; #include&lt;conio.h&gt; #include&lt;math.h&gt;...

Удаление подряд идущих элементов
Добрый день, помогите пожалуйста с задачей. Дан список из n целых чисел a1, a2,. . .,an. Из группы...

Удаление подряд идущих элементов
Дан список из n целых чисел a1, a2,...,an. Из группы подряд идущих элементов с одинаковыми...

Поиск самой длинной цепочки из подряд идущих одинаковых элементов в массиве
Помогите пожалуйста решить программу. Если можно как можно проще используя только циклы, ветвления...

Найти в массиве наибольшее число подряд идущих одинаковых элементов (например {1,5,3,6,6,6,6,6,3,4,4,5,5,5} = 5)
???


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

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

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