Я написал код, который предполагает удаление повторяющихся элементов в массиве целых чисел без сортировки.
Для этой задачи я написал функцию с именем
'removeDuplicateElements', который получает массив и его строку и возвращает динамически размещаемый новый массив, который на самом деле является исходным массивом с удалением всех его дублирующих элементов.
Эта функция также возвращает по ссылке размер нового массива.
Я также использовал в своем коде функции, которые создают динамический массив и распечатывают его.
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
void printArray(int* arr, int size);
int* buildArray(int size);
int* removeDuplicateElements(int *arr, int size, int *newSize);
void main()
{
int size;
int *newSize;
int *arr;
int *newArr;
printf("please enter a number for the size of array: ");
scanf("%d", &size);
printf("\nenter %d numbers: ", size);
arr = buildArray(size);
printf("\nthe array after removing the duplicate elements is: ");
newArr = removeDuplicateElements(arr, size, &newSize);
size = *newSize;
printArray(newArr, size);
free(newArr);
free(arr);
}
void printArray(int* arr, int size)
{
int i;
for (i = 0; i < size; i++)
printf("%d ", arr[i]);
printf("\n");
}
int* buildArray(int size)
{
int i;
int* arr = (int*)malloc(size * sizeof(int));
if (!arr)
{
printf("ERROR! Not enough memory!\n");
exit(1);
}
for (i = 0; i < size; i++)
scanf("%d", &arr[i]);
return arr;
}
int* removeDuplicateElements(int *arr, int size, int *newSize)
{
int *newArr;
int count = size, i, j;
for(i=1;i<size;i++)
for(j=0;j<size;j++)
if (arr[i] == arr[j] && i!=j)
{
count--;
break;
}
newArr = (int*)malloc(count * sizeof(int));
count = 1;
newArr[0] = arr[0];
for (i = 1; i < size; i++)
for (j = 0; j < size; j++)
{
if (arr[i] == arr[j] && i!=j)
break;
else if (j == size - 1)
newArr[count++] = arr[i];
}
*newSize = count;
return newArr;
}
Теперь, когда я запускаю этот код - я получаю два следующих предупреждения:
warning C4047: 'function': 'int *' differs in levels of indirection from 'int **'
warning C4024: 'removeDuplicateElements': different types for formal and actual parameter 3
Я пытался получить помощь от qeustions с похожей проблемой, но я все еще не понимаю, что не так и почему я получаю эти предупреждения.
Любая помощь будет оценена!