#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]
*/