ماتریس

سلام دوستان

من میخواهم به زبان c دو تا ماتریس را در هم ضرب کنم
ارایه از نوع پویا است و با دستور mallocاینکار را میخوام انجام بدهم
منتها چند تا مشکل دارم:

1-تعریف کردن ارایه پویا دوبعدی
2-دسترسی به تک تک خانه های ماتریس
3-مقداردهی اولیه
4- خواندن و چاپ کردن درایه ها
ممنون
 
سلام

نه من برنامه کامل را نمیخواهم برنامه خیلی فراتر از این حرفهاست من فقط قسمتی را میخواهم که مربوط به ارایه پویاست دوستانی که واردند می دونند جواب سولات من در حد سه چهار خط دستور
 

the_king

مدیرکل انجمن
سلام دوستان

من میخواهم به زبان 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);

با کد زیر آرایه پویای مورد نظر را حذف خواهید کرد (انتهای کد برنامه برای آزاد کردن حافظه اشغال شده) :
کد:
    free(a);

2-دسترسی به تک تک خانه های ماتریس
برای خواندن و نوشتن در حافظه مؤلفه های آرایه، یک تابع خواهیم ساخت با نام A که کار را ساده می کند :
کد:
int *A(int i, int j)
{
    return a + i * n + j;
}

پارامتر های اول (i) و دوم (j) سطر و ستون مؤلفه خواهد بود.

با کد زیر در اندیس [a[0][0 مقدار 14 را خواهیم نوشت :
کد:
    *A(0,0) = 14;

با کد زیر مقدار اندیس [a[1][3 را نمایش خواهیم داد :
کد:
    printf("%d", *A(1,3));

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));
        }
    }
 

جدیدترین ارسال ها

بالا