Не правильно удаляются элементы массива

Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain

Ответить
Anton1234
Сообщения: 1
Зарегистрирован: 23 дек 2012, 19:35

Условие задачи: Дан массив а1,...,а50. Найти в нем последовательности из идущих подряд трех равных между собой элементов, и удалить два из них. Если таких нет напечатать 0. Не могу понять, что я задал неправильно: нахождение 3-го повторяющегося элемента или удаление двух элементов из найденной последовательности, а может и то, и другое. Помогите разобраться. Заранее благодарен.

Код: Выделить всё

#include <stdio.h>
#include <math.h>
#include <stdlib.h>

   void main()
 {
   int i,j,k,f,n,count;
   int a[50];
   printf("\nVvedite kolichestvo elementov massiva n:\n");
   scanf("%d", &n);
   printf("Vvedite elementy massiva a:\n");
   for(i=0;i<n;i++)
   scanf("%d",&a[i]);
   f=0;
   count=0;
   for(i=0;i<n;i++)
   {
       for(j=i+1;j<n;j++)
       {
           if(a[i]==a[j])
           count++;

        }
       if(count==3){
       for(k=i;k<n-2;k++)
       {
           a[k]=a[k+2];
           n=n-2;
           f=1;
       }
    }
    }
   if(f==1){
   printf("Vvedenyi massiv imeet vid:\n");
   for(i=0;i<n;i++)
   printf("%d",a[i]);
   }
   else printf("\n 0\n");
}
Albor
Сообщения: 491
Зарегистрирован: 06 сен 2004, 13:34
Откуда: Днепропетровск

После удаления 2х элементов возможна ситуация, когда вновь образуется тройка одинаковых и нужно делать проверку с индекса i, а не переходить на итерацию с увеличенным значением i на 1.
Ответить