واضح آرشیو وب فارسی:سایت ریسک: ماتریس ACTIVECOMP 20 آبان 1388, 15:12سلام دوستان من میخواهم به زبان c دو تا ماتریس را در هم ضرب کنم ارایه از نوع پویا است و با دستور mallocاینکار را میخوام انجام بدهم منتها چند تا مشکل دارم: 1-تعریف کردن ارایه پویا دوبعدی 2-دسترسی به تک تک خانه های ماتریس 3-مقداردهی اولیه 4- خواندن و چاپ کردن درایه ها ممنون mohan21 20 آبان 1388, 20:19ببخشید یعنی برنامه کامل رو می خواهید ؟؟؟؟ ACTIVECOMP 21 آبان 1388, 10:40سلام نه من برنامه کامل را نمیخواهم برنامه خیلی فراتر از این حرفهاست من فقط قسمتی را میخواهم که مربوط به ارایه پویاست دوستانی که واردند می دونند جواب سولات من در حد سه چهار خط دستور the_king 21 آبان 1388, 18:28سلام دوستان من میخواهم به زبان 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(" "); } با کد زیر مقدار تمامی مؤلفه های آرایه را از کاربر دریافت می کنیم : for (i = 0; i < n; i++) { for (j = 0; j < n; j++) { printf("a[%d][%d] : ", i, j); scanf("%d", A(i, j)); } }
این صفحه را در گوگل محبوب کنید
[ارسال شده از: سایت ریسک]
[مشاهده در: www.ri3k.eu]
[تعداد بازديد از اين مطلب: 2417]