Задан массив А из 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] << " ";
}
Тогда вроде всё правильно работает.