How to multiply each pair of consecutive items in an array with C

1 Answer

0 votes
#include <stdio.h>
#include <stdlib.h>

int* multiply_pairs(const int *arr, size_t size, size_t *out_size) {
    if (size < 2) {
        *out_size = 0;
        return NULL;   // no pairs to multiply
    }

    *out_size = size - 1;

    int *products = malloc((*out_size) * sizeof(int));
    if (!products) {
        perror("malloc failed");
        exit(EXIT_FAILURE);
    }

    for (size_t i = 0; i < *out_size; i++) {
        products[i] = arr[i] * arr[i + 1];

        // 2 * 3 = 6
        // 3 * 4 = 12
        // 4 * 5 = 20
        // 5 * 6 = 30
        // 6 * 7 = 42
    }

    return products;
}

int main(void) {
    int arr[] = {2, 3, 4, 5, 6, 7};
    size_t size = sizeof(arr) / sizeof(arr[0]);

    size_t out_size;
    int *products = multiply_pairs(arr, size, &out_size);

    printf("[");
    for (size_t i = 0; i < out_size; i++) {
        printf("%d", products[i]);
        if (i + 1 < out_size) printf(", ");
    }
    printf("]\n");

    free(products);
    
    return 0;
}



/*
run:

[6, 12, 20, 30, 42]

*/

 



answered Jan 31 by avibootz

Related questions

...