سلام دوستان
من میخواهم به زبان c دو تا ماتریس را در هم ضرب کنم
ارایه از نوع پویا است و با دستور mallocاینکار را میخوام انجام بدهم
منتها چند تا مشکل دارم:
ابتدا ابعاد آرایه ها را مشخص کنید، فرض می کنم که تعداد سطر و ستون ماتریس ها برابر n باشد
و نام آرایه a باشد و نوع آن int باشد :
کد:
#include <stdio.h>
#include <stdlib.h>
int *a;
int n = 10;
1-تعریف کردن ارایه پویا دوبعدی
با کد زیر یک آرایه دو بعدی پویا با ابعاد n در n و نوع داده int خواهید ساخت :
کد:
a = malloc(sizeof(int) * n * n);
با کد زیر آرایه پویای مورد نظر را حذف خواهید کرد (انتهای کد برنامه برای آزاد کردن حافظه اشغال شده) :
2-دسترسی به تک تک خانه های ماتریس
برای خواندن و نوشتن در حافظه مؤلفه های آرایه، یک تابع خواهیم ساخت با نام A که کار را ساده می کند :
کد:
int *A(int i, int j)
{
return a + i * n + j;
}
پارامتر های اول (i) و دوم (j) سطر و ستون مؤلفه خواهد بود.
با کد زیر در اندیس [a[0][0 مقدار 14 را خواهیم نوشت :
با کد زیر مقدار اندیس [a[1][3 را نمایش خواهیم داد :
با کد زیر مقدار تمامی مؤلفه های آرایه را برابر 0 خواهیم کرد :
کد:
int i, j;
for (i = 0; i < n; i++)
for (j = 0; j < n; j++)
*A(i, j) = 0;
4- خواندن و چاپ کردن درایه ها
با کد زیر مقدار تمامی مؤلفه های آرایه را چاپ خواهیم کرد :
کد:
for (i = 0; i < n; i++)
{
for (j = 0; j < n; j++)
printf("%5d", *A(i, j));
printf("\n");
}
با کد زیر مقدار تمامی مؤلفه های آرایه را از کاربر دریافت می کنیم :
کد:
for (i = 0; i < n; i++)
{
for (j = 0; j < n; j++)
{
printf("a[%d][%d] : ", i, j);
scanf("%d", A(i, j));
}
}