How to get array subset in C

1 Answer

0 votes
#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 

*/

 



answered Mar 24, 2025 by avibootz
...