البرمجة

حساب متوسط عناصر مصفوفة باستخدام C

To find the average value of the elements in the array pointed to by matrix, you can simplify your overallavg function. You don’t need to call the other two functions (rowavg and colavg) within overallavg. Instead, you can calculate the sum of all elements in the matrix and then divide by the total number of elements (rows * cols).

Here’s an updated version of your overallavg function:

c
float overallavg(float* matrix, int rows, int cols) { if (matrix == NULL) { return 0; // or handle the error as appropriate } int i, j; float sum = 0; int total_elements = rows * cols; for (i = 0; i < rows; i++) { for (j = 0; j < cols; j++) { sum += matrix[i * cols + j]; } } return sum / total_elements; }

In this function, sum is the sum of all elements in the matrix, and total_elements is the total number of elements. The function then returns the average by dividing sum by total_elements.

I also noticed a couple of issues in your overallavg function:

  1. You are returning NULL in case matrix is NULL. Since the return type is float, you should return a float value instead. I changed it to return 0 in this case, but you can handle the error differently based on your requirements.
  2. In the calculation of the average (avg=sum/elements-1;), you subtract 1 from the division result, which is incorrect. You should remove the -1 from the expression. The correct calculation is avg = sum / elements;.

This function now correctly calculates the average value of the elements in the matrix.

المزيد من المعلومات

في الشيفرة التي قمت بتقديمها، تقوم بعملية قراءة قيم المصفوفة وحساب متوسط الصفوف ومتوسط الأعمدة بشكل صحيح. ولكن في دالة overallavg توجد بعض الأخطاء التي يجب تصحيحها. على سبيل المثال، تقوم بتعيين avg=sum/elements-1; لحساب المتوسط الكلي، وهذا غير صحيح. يجب عليك إزالة الـ -1 حتى يتم حساب المتوسط بشكل صحيح.

كما أنه يجب التأكد من التحقق من قيمة matrix قبل استخدامها في حساباتك لتجنب الأخطاء التي يمكن أن تحدث نتيجة لذلك.

زر الذهاب إلى الأعلى