एक सरणी समान डेटा प्रकार के तत्वों का कंटेनर है। प्रोडक्ट सरणी पहेली में, सभी तत्वों का गुणनफल निकाला जाता है।
इस पहेली में, हमें सरणी के सभी तत्वों का गुणनफल वर्तमान तत्व को छोड़कर निकालना है। शर्त यह है कि आप विभाजन ऑपरेटर का उपयोग नहीं कर सकते और परिणाम को दूसरी सरणी में संग्रहीत करना है।
इसे हल करने के लिए हम दो गुणनफल बनाएंगे: एक बाईं ओर के सभी तत्वों का और एक दाईं ओर के सभी तत्वों का। फिर इन बाएं और दाएं गुणनफलों को गुणा करके वांछित गुणनफल प्राप्त करेंगे।
C कोड उदाहरण
#include <stdio.h>
#include <stdlib.h>
void productfind(int arr[], int n) {
int *left = (int *)malloc(sizeof(int)*n);
int *right = (int *)malloc(sizeof(int)*n);
int *prod = (int *)malloc(sizeof(int)*n);
int i, j;
left[0] = 1;
right[n-1] = 1;
for(i = 1; i < n; i++)
left[i] = arr[i-1] * left[i-1];
for(j = n-2; j >= 0; j--)
right[j] = arr[j+1] * right[j+1];
for(i = 0; i < n; i++)
prod[i] = left[i] * right[i];
for(i = 0; i < n; i++)
printf("%d ", prod[i]);
return;
}
int main() {
int arr[] = {10, 3, 5, 6, 2};
printf("The array is : \n");
int n = sizeof(arr)/sizeof(arr[0]);
for(int i = 0; i < n; i++)
printf("%d ", arr[i]);
printf("\nThe product array is: \n");
productfind(arr, n);
return 0;
}
आउटपुट
The array is : 10 3 5 6 2 The product array is: 180 600 360 300 900