با سلام و خسته نباشید
آیا می شود که مقدار بازگشتی یک تابع یک آرایه باشد.اگر می شود لطفا من را راهنمایی کنید.
ممنون
با سلام و خسته نباشید
آیا می شود که مقدار بازگشتی یک تابع یک آرایه باشد.اگر می شود لطفا من را راهنمایی کنید.
ممنون
بله!
فقط کافیه موقع تعریف تابع، نوع مقدار بازگشتی رو مشخص کنی و بعد از اتمام تعریف، متغییری با همون نوع رو Return کنی
مثلا این یه تابع ( فقط جنبه آموزشی داره ) خیلی ساده که یه رشته رو میگیره و اون رو از اسلش ها میشکنه و داخل یه آرایه خروجی میده:
private string[] Spliter(string Input)
{
string[] s = Input.Split('/');
return s;
}
امیدم به دستان زیبای اوست . آنکه می آید . همان که نامش منجی ست ....
به راستی اگر غرق نبودیم چرا مارا به منجی ای نیازمند کرده اند؟ ... دنیا دریاست ....
دلنوشته های من
چشم جناب مدیر :)
بنده که عرض کردم " فقط جنبه آموزشی داره" ، خواستم دوستمون راحت متوجه بشه، گفتم اگه از List استفاده کنم، کلا گیج میشه ;)
ممنون. مشکلم حل شد. ولی حالا تو فراخوانی این تابع مشکل دارم.
ن تابع زیر رو نوشتم حالا چطور a و b ورودی رو تو فراخوانی بکار ببرم.
public int[,] zarb(int[,] a, int[,] b, int n)
{
int[,] c = new int[n, n];
for (int i = 0; i <= n - 1; i++)
{
for (int j = 0; j <= n - 1; j++)
{
c[i, j] = ((a[i, j] * b[j, i]) + (a[i, (j + 1)] * b[(j + 1), i]));
}
}
return c;
}
سلام
مثل اینکه برنامه ضرب ماتریس رو داری می نویسی. a و b رو مثل همه متغیرهای دیگه به متد پاس کن.
ارسال آرایه به متدها به عنوان پارامتر:
Passing Arrays as Parameters (C# Programming Guide)
این نسخه موازی برنامه شماست و سرعت در سیستم 4 هسته ای 4 برابر می شود (در دات نت 4 امکان پذیر است):
static void MultiplyMatricesParallel(double[,] matA, double[,] matB, double[,] result)
{
int matACols = matA.GetLength(1);
int matBCols = matB.GetLength(1);
int matARows = matA.GetLength(0);
// A basic matrix multiplication.
// Parallelize the outer loop to partition the source array by rows.
Parallel.For(0, matARows, i =>
{
for (int j = 0; j < matBCols; j++)
{
// Use a temporary to improve parallel performance.
double temp = 0;
for (int k = 0; k < matACols; k++)
{
temp += matA[i, k] * matB[k, j];
}
result[i, j] = temp;
}
}); // Parallel.For
}
می بینید که نتیجه حاصلضرب هم خودش به متد پاس داده شده است.
باسلاملطفا دلیل فنی را ارائه فرمائید
این لینک رو بخونید
موفق باشید
گفتم اینطوری:
c = zarb(a, b, n);
دوست عزیز شما دارید داده خام تحویل تابع میدین باید اونو مقدار دهی کنید در ضمن اگر امکان داره خطایه مورد نظر رو کپی و اینجا پیست کنی تا بتونیم راهنماییت کنیم
برای من که باز میشهسلام
لینک خراب است
سلام
بلاخره لینک را باز کردم و خوندم اتفاقا خیلی جالب بود چون به فکر اولیه من نزدیک بود (من خودم در 99٪ موارد از جنریک استفاده می کنم) خوب شکی نیست که قابلیت و انعطاف پذیری Generic ها در شرایط مساوی از ArrayList ها خیلی خیلی بیشتر است ولی نباید یک نسخه کامل تجویز گردد که از این ببعد از Generic استفاده شود چون بنظر میرسد مثلا برای حل یک دستگاه 1000 معادله و 1000 مجهول (مثلا به روش چولسکی) میزان منابع استفاده شده برای حالت Generic بیشتر از یک Array است که تمام اعضای آن ثابت و ایستا است از طرفی موضوع ByVal و ByRef و همچنین موضوع استفاده از کلاس به جای Struct هم در میان است مثلا :
public class M
{
public M(int Row, int Col, int Value)
{
this.Row = Row;
this.Col = Col;
this.Value = Value;
}
public M(int Row, int Col)
: this(Row, Col, 0)
{
}
public int Row { set; get; }
public int Col { set; get; }
public int Value { set; get; }
}
private void f()
{
int[,] a =new int[1000, 1000];
a[0, 0] = 10;
List<M> b =new List<M>(1000);
b.Add(new M(0, 0));
b[0].Value = 10;
}
آخرین ویرایش به وسیله ASKaffash : چهارشنبه 21 تیر 1391 در 07:20 صبح