Задан массив А из N чисел

Задан массив А из N чисел. В массиве А рядом могут стоять одинаковые числа. Образовать массив В, подсчитав количество повторяющихся чисел в массиве А, стоящих рядом. Например, массив А был (2,0,0,1,4,4,3,5,5,5), тогда массив В будет (1,2,1,2,1,3).

Мой код не работает нужным образом:

#include <iostream>
#include <string>
#include <conio.h>

using std::cout;
using std::cin;
using std::endl;

int main()
{    
        int arr[10];
        int mas[10];
        
        
        cout <<"Enter massive numbers\n";
        for (int i = 0; i < 10; i++) 
        {
            cout << "[" << i + 1 << "]" << ": ";
            cin >> arr[i];
        }

        // И выводим заполненный массив.
        cout << "\nYour massive :  ";

        for (int i = 0; i < 10; ++i) 
        {
            cout << arr[i] << " ";
        }
         
        cout << "\nYour massive :  ";
        int last=arr[0];
        int index=0;
        for (int i=1;i<10;++i)
        {
            
            if (arr[i]==last) 
                {mas[index]++;}
            else {index++;
            mas[index]=1;last=arr[i];}
            cout << mas[index] << " ";
        }
    
            
        
        cout << endl;
        system("pause");
        return 0;
}

Ответы (1 шт):

Автор решения: CrazyElf

Первый элемент у вас никак не учитывается, это можно исправить, например, задав единицу ещё перед циклом подсчёта:

int last=arr[0];
int index=0;
mas[0] = 1; // учитываем первый элемент

Ну и вывод в конце нужно добавить, учитывая при этом получившееся число элементов нового массива, которое у вас находится в index:

cout << endl;
for (int i = 0; i <= index; ++i) 
{
    cout << mas[i] << " "; 
}

Тогда вроде всё правильно работает.

→ Ссылка