Member 13706232 Ответов: 2

Как я могу напечатать результат ?


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

Что я уже пробовал:

#include<stdio.h>
#define SIZE 50
void rem(int *a,int ele,int size){
	for(int i=0;i<size;i++){
		//i--;
		if(*(a+i)==ele){
			*(a+i)=*(a+i+1);
			size--;
			i--;
		}
	}
	for(int i=0;i<size;i++)
		printf("%d ",*(a+i));
}
void main(){
	int arr[SIZE],ele,n,i;
	printf("size : ");
	scanf("%d",&n);
	for(i=0;i<n;i++){
		printf("Ele : ");
		scanf("%d",&arr[i]);
	}
	printf("Element to be removed : ");
	scanf("%d",&ele);
	rem(arr,ele,n);
	
}

2 Ответов

Рейтинг:
2

Rick York

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


Рейтинг:
1

CPallini

Попробуй

#include <stdio.h>

#define SIZE 50

int rem(int *a,int ele, int size)
{
  int found = 0;

  for(int i=0;i<(size-found);i++)
  {
    if ( ! found )
    {
      if ( *(a+i) == ele)
        found = 1;
    }
    if ( found )
      *(a+i) = *(a+i+1);
  }
  return (size-found); // return the new size of the array
}

int main()
{
  int arr[SIZE], ele, n, i;
  printf("size : ");
  scanf("%d", &n);
  for(i=0; i<n; i++)
  {
    printf("Ele : ");
    scanf("%d",&arr[i]);
  }
  printf("Element to be removed : ");
  scanf("%d", &ele);
  int size = rem(arr, ele, n);
  for (i=0; i<size; ++i)
    printf("Ele[%d] : %d\n", i,arr[i]);
  return 0;
}