Определить количество пар совпадающих элементов массива и удалить в каждой из них один такой элемент - C (СИ)
Формулировка задачи:
Помогите с задачей пожалуйста.
Массив целых чисел X=(x1,x2,...,xn) содержит некоторое количество совпадающих элементов.Определить кол-во пар совпадающих элементов и удалить в каждой из них один такой элемент. Определить ,как изменилось среднее арифметическое значение элементов массива Х после его преобразования.
Решение задачи: «Определить количество пар совпадающих элементов массива и удалить в каждой из них один такой элемент»
textual
Листинг программы
#include <stdio.h>
#include <conio.h>
#define N 10
int main(int argc, char* argv[])
{
int A[N] = { 3, 1, 5, 1, 4, 3, 5, 2, 1, 4 };
for (int t1 = 0; A[t1] > 0; t1++)
printf("%d ",A[t1]);
printf("\n");
int pcnt = 0;
for (int i = 0; A[i] > 0; i++)
{
bool found = false;
for (int m = i-1; m >= 0 && !found; m--)
found = (A[m] == A[i]) ? 1 : 0;
if (found != false) continue;
int count = 0;
for (int j = i+1; A[j] > 0; j++)
if (A[j] == A[i])
{
for (int k = j; A[k] > 0 && !count; k++)
A[k] = A[k+1];
count++;
}
if (count > 0) pcnt++;
}
for (int t2 = 0; A[t2] > 0; t2++)
printf("%d ",A[t2]);
printf("\ncount = %d\n",pcnt);
_getch();
}
Объяснение кода листинга программы
В этом коде определен массив A размером N = 10, заполненный случайными целыми числами от 1 до 5.
- Сначала этот массив выводится на экран.
- Затем начинается поиск пар совпадающих элементов. Для каждой пары выполняется попытка удаления одного элемента. Если удаление прошло успешно (то есть, если после удаления элемент с таким же значением еще остался в массиве), увеличивается счетчик pcnt.
- После обхода всего массива выводится количество найденных пар.