#include <stdio.h>
#include <stdlib.h>
int* allocateSubset(int length) {
int* subset = (int*)malloc(length * sizeof(int));
if (subset == NULL) {
printf("Memory allocation failed.\n");
exit(1); // Exit the program if memory allocation fails
}
return subset;
}
void getSubset(int* array, int startIndex, int length, int size, int* subset) {
// Validate the range
if (startIndex < 0 || startIndex + length > size) {
printf("Invalid range: Subset exceeds array bounds.\n");
exit(1); // Exit the program if the range is invalid
}
// Copy elements from the original array to the subset
for (int i = 0; i < length; i++) {
subset[i] = array[startIndex + i];
}
}
int main() {
int arr[] = {3, 7, 9, 0, 4, 2, 1, 8};
int size = sizeof(arr) / sizeof(arr[0]);
int startIndex = 2; // Start index for the subset
int length = 4; // Number of elements in the subset
int* subset = allocateSubset(length);
getSubset(arr, startIndex, length, size, subset);
printf("Subset: ");
for (int i = 0; i < length; i++) {
printf("%d ", subset[i]);
}
printf("\n");
free(subset);
return 0;
}
/*
run:
Subset: 9 0 4 2
*/