Mảng là một vùng chứa các phần tử có cùng kiểu dữ liệu. Trong Câu đố mảng sản phẩm, sản phẩm của tất cả các phần tử được tìm thấy.
Trong Câu đố mảng sản phẩm này, chúng ta cần tìm tích của tất cả các phần tử của mảng ngoại trừ phần tử. Điều kiện là bạn không thể sử dụng toán tử phân chia và lưu trữ cái này vào một mảng khác.
Để giải quyết vấn đề này, chúng tôi sẽ tạo ra hai sản phẩm, một cho tất cả các phần tử bên trái và một cho tất cả các phần tử bên phải. Và sau đó thêm các sản phẩm trái và phải này để có được sản phẩm mong muốn.
Ví dụ
#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("The product array is: \n"); productfind(arr, n); }
Đầu ra
The array is : 10 3 5 6 2 The product array is: 180 600 360 300 900