PDA

View Full Version : مشکل در ترانهاده ماتریس



ehsan_faal
چهارشنبه 22 مرداد 1393, 20:15 عصر
سلام.میشه خیلی ساده توضیح بدید که تو کد زیر واسه این که هر بار خواستم نتایج رو بیارم رو صفحه نمایش فقط از یه تابع استفاده کنم باید چیکار کنم؟
آخه تا اینجا که من دایتل رو خوندم حتما باید اندیس دوم آرایه رو تو نمونه اولیه توابع ذکر کنیم و این که سایز آرایه هم فقط میتونه ثابت باشه و نمیشه دوباره مقدار دهیش کرد.به همین خاطر الان من مجبورم دو تا تابع واسه پرینت معرفی کنم.

#include <iostream>
#include<time.h>
#include<stdlib.h>
#include <iomanip>
const int rows = 3;
const int column = 2;
void print1(int[][column],int ,int );
void print2(int[][rows], int , int );
using namespace std;
void main()
{
srand(time(NULL));
int a[rows][column];
int b[column][rows];
int i, j;
for (i = 0; i < rows; i++)
{
for (j = 0; j < column; j++)
a[i][j] = 1 + rand() % 10;
}
print1(a,rows,column);


for (i = 0; i < rows; i++)
{
for (j = 0; j < column; j++)
{
b[j][i] = a[i][j];
}
}
print2(b, column, rows);
}
void print1(int array[][column], int satr, int sotun)
{
cout << "The First Martrix:\n";
for (int i = 0; i < satr; i++)
{
for (int j = 0; j < sotun; j++)
cout << setw(3) << array[i][j];
cout << endl;
}
}
void print2(int array[][rows], int satr, int sotun)
{
cout << "\n\nThe Second Martrix:\n";
for (int i = 0; i < satr; i++)
{
for (int j = 0; j < sotun; j++)
cout << setw(3) << array[i][j];
cout << endl;
}
}
با تشکر

ehsan_faal
پنج شنبه 23 مرداد 1393, 09:57 صبح
کسی نیست جواب بده به من؟

مسعود اقدسی فام
جمعه 24 مرداد 1393, 23:28 عصر
یه راه حلش استفاده از قالب‌هاست:



#include <iostream>
#include<time.h>
#include<stdlib.h>
#include <iomanip>
const int rows = 3;
const int column = 2;

using namespace std;

template <class t>
void print(t array, int satr, int sotun)
{
cout << "The Martrix:\n";
for (int i = 0; i < satr; i++)
{
for (int j = 0; j < sotun; j++)
cout << setw(3) << array[i][j];
cout << endl;
}
}

int main()
{
srand(time(NULL));
int a[rows][column];
int b[column][rows];
int i, j;
for (i = 0; i < rows; i++)
{
for (j = 0; j < column; j++)
a[i][j] = 1 + rand() % 10;
}
print(a,rows,column);


for (i = 0; i < rows; i++)
{
for (j = 0; j < column; j++)
{
b[j][i] = a[i][j];
}
}
print(b, column, rows);
return 0;
}




راه حل دیگه‌ای با استفاده از مفهوم اشاره‌گر داره .