PDA

View Full Version : سوال: انتقال یه سطر از ماتریس به یه ارایه



root88
چهارشنبه 20 مرداد 1389, 12:17 عصر
با سلام
می خوام از یه ماتریس یه سطرشو جدا کنم بریزم تو یه ارایه جدا. تابع زیر رو براش نوشتم اما نمی دونم چرا محتویاتش اشتباهه . یعنی یه تعداد عدد و یه تعدادش ادرسه. ممنون میشم راهنمایی کنید.



void setArray(int **a,int c[],int m, int l)
{
for(int i=1;i<=l;i++)
{
c[i]=a[m][i];




اینم فراخوانیه که main کردم . اسم ماتریس ، ارایه ای که می خوام یه سطر مورد نظر رو بریزم توش، شماره سطر و تعداد ستونهای ماتریس(ماتریس مربعیه)



setArray(setMat,temparray,1,graphNumber);

drstrike
چهارشنبه 20 مرداد 1389, 14:09 عصر
سلام

#define ROW 3
#define COL 3
void setArray(int a[][COL],int c[],int m, int l)
{
for(int i=0;i<l;i++)
c[i]=a[m][i];
}

tdkhakpur
چهارشنبه 20 مرداد 1389, 16:05 عصر
memcpy(temparray, &setMat[1], graphNumber*sizeof(temparray[0]));

عدد 1 همان سطر مورد نظر هست

root88
چهارشنبه 20 مرداد 1389, 17:40 عصر
دوست عزیز
ماتریس من به صورت پویا ایجاد میشه در زمان کد نویسی تعداد سطرها و ستون ها رو ندارم و نمی تونم مقدار اونها رو مشخص کنم واسه همین کل ماتریس رو به تابع رد کردم.
من یه ماتریس 2 در چهار دادم بهش به عنوان ورودی با مقادیر{{4,2,0,0},{1,2,0,0}} که خروجی تابع به شکل زیر شد نمی دونم اون صفرهای وسط واسه چیه :




http://www.irupload.ir/images/iu008du7z8njdanba16m.jpg


memcpy(temparray, &setMat[1], graphNumber*sizeof(temparray[0]));

ببخشید من اینو اصلا نفهمیدم.

Salar Ashgi
چهارشنبه 20 مرداد 1389, 17:57 عصر
یه مثال نمونه :



#include <iostream>
#include <conio>
void Copy(int **a,int row,int col,int *res,int index){
int k=0;
for(int i=0;i<row;i++){
for(int j=0;j<col;j++){
if(i==index)
res[k++] = a[i][j];
}
}
}
//===============================
int main(){
int row,col;
cout<<"Enter row , col for Matrix :\n";
cin>>row>>col;
int **a = new int*[row];
for(int i=0;i<row;i++)
a[i] = new int[col];
cout<<"Enter your Matrix :\n";
for(int i=0;i<row;i++){
for(int j=0;j<col;j++)
cin>>a[i][j];}
cout<<"==============\n";
cout<<"Your Matrix :\n";
for(int i=0;i<row;i++){
for(int j=0;j<col;j++)
cout<<a[i][j]<<" ";
cout<<endl;}
cout<<"==============\n";
cout<<"Enter index :\n";
int index;
cin>>index;
int *res = new int[row];
Copy(a,row,col,res,index-1);
for(int i=0;i<row;i++)
cout<<res[i]<<" ";
getch();
}
http://www.barnamenevis.org/forum/attachment.php?attachmentid=53998&stc=1&d=1281535037

توضیح تابع Copy :

int **a : ماتریس ورودی

row : تعداد سطرهای ماتریس ورودی

col : تعداد ستونهای ماتریس ورودی

res : آرایه نتیجه

index : شماره سطر جهت انتخاب

موفق باشید ./