PDA

View Full Version : ارسال آرایه دو بعدی به تابع



تبسم ساینا
سه شنبه 19 آذر 1392, 21:55 عصر
سلام دوستان
من یه برنامه دارم با زبان سی که دو تا آرایه دو بعدی رو می گیره,یعنی اول تعداد سطر و ستون هر دو آرایه رو می گیره و سپس از کاربر عدد میگیره و داخل آرایه می ریزه.حالا میخوام واسه این دو تا آرایه برنامه ضرب ماتریس بنویسم,اونم داخل تابع جداگانه نه داخل تابع main
سوالم این هست که چجوری میشه یه همچین آرایه ای رو که در main تعریف کردم به تابع فرستاد؟
#include <cstdlib>
#include <iostream>
#include <stdio.h>
#include <conio.h>

using namespace std;
void Zarb(int,int,int,int,int,int);
void tranahade(int,int,int);

int main()
{
int m,n,o,p,i,j,k;
printf("m=teadad satr,n=tedad soton matris A:\n");
printf("m=");
scanf("%d",&m);
printf("n=");
scanf("%d",&n);
printf("\no=teadad satr,p=tedad soton matris B:\n");
printf("o=");
scanf("%d",&o);
printf("p=");
scanf("%d",&p);
int A[m][n],B[o][p];
printf("\nmatris A[%d][%d]:\n",m,n);
for(int i=0;i<m;i++)
{
for(int j=0;j<n;j++)
{
scanf("%d",&A[i][j]);
}
printf("\n");
}
printf("\nmatris B[%d][%d]:\n",o,p);
for(int i=0;i<o;i++)
{
for(int j=0;j<p;j++)
{
scanf("%d",&B[i][j]);
}
printf("\n");
}
Zarb(m,n,o,p,A[m][n],B[o][p])
}
void zarb(int m,int n,int o,int p,int A,int B)
{
int x;
printf("\nA*B:\n");
for(int i=0;i<m;i++)
{
for(int j=0;j<p;j++)
{
x=0;
for(int k=0;k<n;k++)
{
x=x+A[i][k]*B[k][j];
}
printf("%d\t",x);
}
printf("\n");
}
}

مصطفی ساتکی
چهارشنبه 20 آذر 1392, 08:52 صبح
قبلاً در اینجا (http://www.7khatcode.com/480/%DA%A9%D8%A7%D8%B1-%D8%A8%D8%A7-%D8%A2%D8%B1%D8%A7%DB%8C%D9%87-2-%D8%A8%D8%B9%D8%AF%DB%8C)و اینجا (http://www.7khatcode.com/405/return-%DA%A9%D8%B1%D8%AF%D9%86-%D8%A2%D8%B1%D8%A7%DB%8C%D9%87)بحث شده

rahnema1
چهارشنبه 20 آذر 1392, 11:00 صبح
واسه آرایه یک بعدی به این تاپیک میتونید مراجعه کنید :http://barnamenevis.org/showthread.php?428018

omidshaman
چهارشنبه 20 آذر 1392, 11:14 صبح
به این تاپیک هم میتونید مراجعه کنید :http://barnamenevis.org/showthread.php?428018
اون که یک بعدیه چه ربطی به این تاپیک داره !

rahnema1
چهارشنبه 20 آذر 1392, 22:02 عصر
واسه ارسال آرایه دو بعدی به تابع اولین براکت را خالی بگذارید و توی دومی هم سایز بعد دوم را بذارید اگه تعداد بعدها بیشتر هم بود اولی را خالی بذارید

#include<iostream>
using namespace std;
void tabe(int arg[][4])
{
for(int i=0;i<5;i++)
for(int j=0;j<4;j++)
arg[i][j]=i+j;
}
int main()
{
int araye[5][4];
tabe(araye);
for(int i=0;i<5;i++)
{
for(int j=0;j<4;j++)
cout<<araye[i][j]<<"\t";
cout<<endl;
}
}