English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
في هذا المثال، ستتعلم كيفية ضرب مصفوفتين معًا واستخدام الدوال المحددة من قبل المستخدم لعرضها.
لفهم هذا المثال، يجب أن تكون على علم بالمواضيع التالية}}برمجة اللغة Cالموضوع:
يتطلب هذا البرنامج إدخال حجم المصفوفتين (الصفوف والعمودين).
لضرب مصفوفتين، يجب أن يكون عدد الأعمدة للصفف الأول يساوي عدد الصفوف للصفف الثاني.
يطلب البرنامج أدناه إدخال عدد الصفوف والعمودين للمصفوفتين حتى يتم استيفاء الشروط المذكورة.
ثم، أعدت ضرب المصفوفتين، وعرضت النتيجة على الشاشة.
للقيام بذلك، قمنا بإنشاء ثلاث دوال:
enterData() - استقبال عناصر المصفوفة من المستخدم.
multiplyMatrices() - ضرب مصفوفتين.
display() - عرض مصفوفة النتيجة بعد الضرب.
#include <stdio.h> void enterData(int first[][10], int second[][10], int r1, int c1, int r2, int c2); void multiplyMatrices(int first[][10], int second[][10], int multResult[][10], int r1, int c1, int r2, int c2); void display(int mult[][10], int r1, int c2); int main() { int first[10][10], second[10][10], mult[10][10], r1, c1, r2, c2; printf("ادخل عدد الصفوف والعمودين للصفف الاول: "); scanf("%d %d", &r1, &c1); printf("ادخل عدد الصفوف والعمودين للصففين المتبقيه: "); scanf("%d %d", &r2, &c2); //تكرار الإدخال حتى يكون عمود الصفف الاول يساوي صفوف الصفف الثانى. while (c1 != r2) { printf("خطأ! احدث إدخال الصفوف والعمودين.\n"); printf("ادخل عدد الصفوف والعمودين للصفف الاول: "); scanf("%d%d", &r1, &c1); printf("ادخل عدد الصفوف والعمودين للصففين المتبقيه: "); scanf("%d%d", &r2, &c2); } //دالة للحصول على بيانات المصفوفة. enterData(first, second, r1, c1, r2, c2); //يستخدم هذا الدالة لتكبير مصفوفتين. multiplyMatrices(first, second, mult, r1, c1, r2, c2); // دالة لعرض مصفوفة الناتجة بعد الضرب. display(mult, r1, c2); return 0; } void enterData(int first[][10], int second[][10], int r1, int c1, int r2, int c2) { printf("\nادخل عناصر مصفوفة 1:\n"); for (int i = 0; i < r1; ++i) { for (int j = 0; j < c1; ++j) { printf("ادخل a%d%d: ", i + 1, j + 1); scanf("%d", &first[i][j]); } } printf("\nادخل عناصر مصفوفة 2:\n"); for (int i = 0; i < r2; ++i) { for (int j = 0; j < c2; ++j) { printf("ادخل b%d%d: ", i + 1, j + 1); scanf("%d", &second[i][j]); } } } void multiplyMatrices(int first[][10], int second[][10], int mult[][10], int r1, int c1, int r2, int c2) { // عناصر مصفوفة الابتدائية تكون في الغالب 0. for (int i = 0; i < r1; ++i) { for (int j = 0; j < c2; ++j) { mult[i][j] = 0; } } // جمع مصفوفة الاولى ومصفوفة الثانية وتخزينها في mult. for (int i = 0; i < r1; ++i) { for (int j = 0; j < c2; ++j) { for (int k = 0; k < c1; ++k) { mult[i][j] += first[i][k] * second[k][j]; } } } } void display(int mult[][10], int r1, int c2) { printf("\nأظهر مصفوفة:\n"); for (int i = 0; i < r1; ++i) { for (int j = 0; j < c2; ++j) { printf("%d ", mult[i][j]); if (j == c2 - 1) printf("\n"); } } }
أظهر النتيجة
ادخل سطر المصفوفة الأولى وعمودها: 2 3 ادخل سطر المصفوفة الثاني وعمودها: 3 2 ادخل عناصر مصفوفة 1: ادخل a11: 3 ادخل a12: -2 ادخل a13: 5 ادخل a21: 3 ادخل a22: 0 ادخل a23: 4 ادخل عنصر المصفوفة 2: ادخل b11: 2 ادخل b12: 3 ادخل b21: -9 ادخل b22: 0 ادخل b31: 0 ادخل b32: 4 إخراج المصفوفة: 24 29 6 25