How to replace each element in array with the product of every other elements in C

1 Answer

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

void product_of_every_other_elements(int arr[], int size) {
    if (size == 0) {
        return;
    }

    int *left = (int*)malloc(size * sizeof(int));
    int *right = (int*)malloc(size * sizeof(int));

    left[0] = 1;
    for (int i = 1; i < size; i++) {
        left[i] = arr[i - 1] * left[i - 1];
    }
 
    right[size - 1] = 1;
    for (int j = size - 2; j >= 0; j--) {
        right[j] = arr[j + 1] * right[j + 1];
    }
 
    for (int i = 0; i < size; i++) {
        arr[i] = left[i] * right[i];
    }
    
    free(left);
    free(right);
}
 
int main(void)
{
    int array[] = { 1, 2, 3, 4, 5 };
    int size = sizeof(array) / sizeof(array[0]);
 
    product_of_every_other_elements(array, size);
 
    for (int i = 0; i < size; i++) {
        printf("%d ", array[i]);
    }
 
    return 0;
}



/*
run:

120 60 40 30 24 

*/

 



answered Sep 21, 2023 by avibootz
...