English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

دروس أساسية في C

تحكم في عملية C

الوظائف في لغة C

القوائم في لغة C

الإشارات في لغة C

الخطوط في لغة C

هيكل C

ملفات C

C أخرى

دليل مرجع C

يقوم برنامج C بتقديم مصفوفة إلى وظيفة للقيام بضربها

مجموعة من أمثلة البرمجة في لغة C

في هذا المثال، ستتعلم ضرب مصفوفتين واستخدام وظائف معينة مكتوبة من قبل المستخدم لعرض النتيجة.

لفهم هذا المثال، يجب أن تكون على علم بما يليبرمجة Cالموضوع:

يتطلب البرنامج من المستخدم إدخال حجم المصفوفة (السطر والعمود).

ثم، يطلب البرنامج من المستخدم إدخال عناصر هذه المصفوفات، وأخيرًا إضافة عرض النتيجة.

لتنفيذ هذه المهمة، يجب تنفيذ ثلاث وظائف:

  1. للحصول على عناصر المصفوفة من المستخدم - enterData()

  2. ضرب مصفوفتين - multiplyMatrices()

  3. عرض مصفوفة النتيجة بعد الضرب - display()

النموذج: ضع مصفوفات في وظيفة للقيام بضربها

#include <stdio.h>
void enterData(int firstMatrix[][10], int secondMatrix[][10], int rowFirst, int columnFirst, int rowSecond, int columnSecond);
void multiplyMatrices(int firstMatrix[][10], int secondMatrix[][10], int multResult[][10], int rowFirst, int columnFirst, int rowSecond, int columnSecond);
void display(int mult[][10], int rowFirst, int columnSecond);
int main()
{
	int firstMatrix[10][10], secondMatrix[10][10], mult[10][10], rowFirst, columnFirst, rowSecond, columnSecond, i, j, k;
	printf("إدخال صفوف وعمودي المصفوفة الأولى: ");
	scanf("%d %d", &rowFirst, &columnFirst);
	printf("إدخال صفوف وعمودي المصفوفة الثانية: ");
	scanf("%d %d", &rowSecond, &columnSecond);
	//إذا كان عمود المصفوفة الأولى لا يساوي صف المصفوفة الثانية، فيجب أن يدخل المستخدم حجم المصفوفة مرة أخرى.
	while (columnFirst != rowSecond)
	{
		printf("خطأ! عمود المصفوفة الأولى لا يساوي صف المصفوفة الثانية.\n");
		printf("إدخال صفوف وعمودي المصفوفة الأولى: ");
		scanf("%d%d", &rowFirst, &columnFirst);
		printf("إدخال صفوف وعمودي المصفوفة الثانية: ");
		scanf("%d%d", &rowSecond, &columnSecond);
	}
	//�数ون للحصول على بيانات المصفوفة
        enterData(firstMatrix, secondMatrix, rowFirst, columnFirst, rowSecond, columnSecond);
        //للمعادلة بين مصفوفتين
        multiplyMatrices(firstMatrix, secondMatrix, mult, rowFirst, columnFirst, rowSecond, columnSecond);
        //�数ون عرض مصفوفة الناتج بعد الضرب
        display(mult, rowFirst, columnSecond);
	return 0;
}
void enterData(int firstMatrix[][10], int secondMatrix[][10], int rowFirst, int columnFirst, int rowSecond, int columnSecond)
{
	int i, j;
	printf("\nإدخال عناصر المصفوفة 1:\n");
	for(i = 0; i < rowFirst; ++i)
	{
		for(j = 0; j < columnFirst; ++j)
		{
			printf("الإدخال العنصر a%d%d: ", i + 1, j + 1);
			scanf("%d", &firstMatrix[i][j]);
		}
	}
	printf("\nالإدخال عنصر مصفوفة 2:\n");
	for(i = 0; i < rowSecond; ++i)
	{
		for(j = 0; j < columnSecond; ++j)
		{
			printf("الإدخال العنصر b%d%d: ", i + 1, j + 1);
			scanf("%d", &secondMatrix[i][j]);
		}
	}
}
void multiplyMatrices(int firstMatrix[][10], int secondMatrix[][10], int mult[][10], int rowFirst, int columnFirst, int rowSecond, int columnSecond)
{
	int i, j, k;
	//تعيين عناصر مصفوفة mult إلى 0.
	for(i = 0; i < rowFirst; ++i)
	{
		for(j = 0; j < columnSecond; ++j)
		{
			mult[i][j] = 0;
		}
	}
	//تخزين نتيجة ضرب مصفوفة firstMatrix وsecondMatrix في مصفوفة mult.
	for(i = 0; i < rowFirst; ++i)
	{
		for(j = 0; j < columnSecond; ++j)
		{
			for(k = 0; k < columnFirst; ++k)
			{
				mult[i][j] += firstMatrix[i][k] * secondMatrix[k][j];
			}
		}
	}
}
void display(int mult[][10], int rowFirst, int columnSecond)
{
	int i, j;
	printf("\nالخروج من مصفوفة:\n");
	for(i = 0; i < rowFirst; ++i)
	{
		for(j = 0; j < columnSecond; ++j)
		{
			printf("%d  ", mult[i][j]);
			if(j == columnSecond - 1)
				printf("\n\n");
		}
	}
}

النتيجة الصادرة

الإدخال صفوف وعمود مصفوفة الأولى: 3
2
الإدخال صفوف وعمود مصفوفة الثانية: 3
2
خطأ! عمود المصفوفة الأولى غير متساوي مع صفوف المصفوفة الثانية.
الإدخال صفوف وعمود مصفوفة الأولى: 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

مجموعة من أمثلة البرمجة في لغة C