Я хочу написать функцию C, которая будет возвращать массив, содержащий значения между двумя 8-битными целыми числами без знака в порядке убывания заказа.
Функция принимает 2 значения (LowerValue и UpperValue). Она определяет промежуточные значения, а затем упорядочивает последовательность в порядке убывания, исключая верхнее и нижнее значения. Если LowerValue больше или равно UpperValue, вернуть массив из 2 элементов, оба из которых содержат значение = 0xFF Пример: Input: LowerValue = 5 и UpperValue = 10 Output: Output Array = 9,8,7,6 Output Array Size = 4
(но мой код содержит ошибку, в результате которой размер = ноль и пустой массив
#include <stdio.h>
/* Global array is empty and will be filled by PrintReverseInclusive function */
int OutputArray[256];
int * PrintReverseInclusive(int LowerNumber,int UpperNumber,int * result_size);
int main(void) {
int count;
int n1 = 5,n2=10;
int *ptr;
int arr_size_used = 0;
ptr = PrintReverseInclusive(n1,n2,&arr_size_used);
printf("Output Array = ");
/* start looping from 0 to the last used element in the array */
for(count=0;count<arr_size_used;count++)
{
/* access the global array using the ptr */
printf("%d ",ptr[count]);
}
printf("\nOutput Array Size = %d",arr_size_used);
return 0;
}
int * PrintReverseInclusive(int LowerNumber,int UpperNumber,int * result_size)
{
int i;
*result_size = 0;
/* check the exit conditions */
if((LowerNumber>=UpperNumber) || (UpperNumber-1 == LowerNumber))
{
OutputArray[0] = 0xFF;
OutputArray[1] = 0xFF;
*result_size = 2;
}
else
{
for(i=UpperNumber-1;i>LowerNumber;i--)
{
OutputArray[*result_size] = i;
(result_size)++;
}
}
return OutputArray;
}