PDA

View Full Version : برگرداندن دو مقدار از یک تابع



baranbahari1320
جمعه 19 آبان 1391, 21:23 عصر
با سلام من میخوام دو مقدار رو از یک تابع برگردونم اما نمیدونم چه جوری گفتن باید با کلاس بنویسم نوشتم اما باز تو برگردوندن مقادیر موندم به هیچ منبعی هم دسترسی ندارم اگه کسی یه مثال خیلی کوچک برام بنویسه ممنون میشم.من فقط امشب وقت دارم.

sgh_programer
جمعه 19 آبان 1391, 21:32 عصر
سلام دوست عزیز
میشه بیشتر توضیح بدی که دقیقا میخوایی چه کار کنی؟

Y_Safaiee
جمعه 19 آبان 1391, 21:48 عصر
سلام دوست من

ساده ترین راه ممکن اینه که دو عدد رو توسط یک Return برگردونید در فرم اصلیتون اعدادو جدا کنید.

مثلا اینطوری :

کد کلاس :
94692
کد فرم
94694

دوبارم میگه ساده ترین شکل ممکن اینه.

موفق باشی
بایت بایت

baranbahari1320
جمعه 19 آبان 1391, 21:48 عصر
من دارم الگوریتم tabu search رو مینویسم برای ماشین های موازی یه قسمت از الگوریتم به صورتیه که تابع تعریف شده دو مقدار رو برمیگردونه یکی بهترین ماشین و دومین بهترین کاری که انتخاب شده برای اینکه جواب مین بشه حالا من نمیدونم جه جوری دو تا return رو توسط یه تابع برگردونم خیلی تلاش کردم اما نتیجه ای نداشت اگه لازمه الگوریتم رو براتون بذارم.با تشکر از شما.

Y_Safaiee
جمعه 19 آبان 1391, 21:54 عصر
لطفا الگوریتم رو بزارین

سپاس

hakim22
جمعه 19 آبان 1391, 21:58 عصر
چندین راه برای اینکار وجود داره :
یک راهش اینه که یک کلاس از دو متغیر بسازی.
مثلا فرض کنید شما میخواهید نقطه ای رو که کاربر کلیک کرده برگردونید که شامل مختصات x و y است.

بهترین راه اینکه که یک کلاس بسازید به نام point که شامل دو خصوصیت x و y است :


class point
{
public int x;
public int y;

}


بعد از این کلاس به عنوان مقدار خروجی تابع استفاده کنید :

public point getMouseLocation(){}


میتوانید از کلمات کلیدی مثل ref و out هم برای گرفتن و ارسال مقدار خروجی استفاده کنید.
مثل :

public void getMouseLocation(ref x,ref y){}

در این روش شما ابتدا متغیرهای x و y رو در کد اصلی میسازید و هنگام فراخوانی تابع به عنوان مقدار ورودی وارد می کنید :

public void main()
{

int x=0;
int y=0;

getMouseLocation(ref x,ref y);
messagebox.show(x.ToString()+","+y.ToString());


}


راه دیگش استفاده از Array هست. مقدار خروجی رو از نوع متغیر آرایه ای از int تعریف کنید و اندیس ها رو به ترتیب برداشت کنید.

راه دیگش استفاده از structure است که خیلی شبیه class است و به دلایل زیادی برتری نسبت به کلاس نداره و بهتره ازش استفاده نکنید.

baranbahari1320
جمعه 19 آبان 1391, 22:28 عصر
اینم الگوریتم این قسمت از برنامه
bestnonetabuemove(X,TL)
bestduration=∞
for i=0 to n-1 do
if TL[i]=0 then
for j=1 to m do
X'=X
X'[i]=j
if getduration(X')<bestduration then
bestduration=getduration(X')
bestjob=i
bestmachine=j
end if
end for
edn if
end for
return bestjob,bestmachine
در هنگام فراخوانی این تابع مقادیر برگشتی درون دومتغییر دیگه قرار میگیرن که رو اونهام پردازش داریم.
i,p=bestnontabumove(X,TL)
در ضمن مقادیر برگشتی من از نوع عدد صحیح هستند و تقریبا تمام توابعم مقدار برمیگردونن.

Y_Safaiee
جمعه 19 آبان 1391, 23:00 عصر
با سلام مجدد

کدتون کامل نیست و نمیشه کامل مقادیرو بررسی کرد اما طبق گفته دوست عزیزم hakim22 (http://barnamenevis.org/member.php?244339-hakim22) میتونین هرجا که قراره متغییری برگشت داده شه اونو به صورت Public تعریف کنید یا اگه مقادیر هر کدوم از متغییرهای برگشتی یکیه به تعداد جدا کنید مثلا اگه عدد بازگشتی 123456789 هست و همیشه 4رفم اول مال یک چیزه و بقیه مال یه چیز دیگه بگین از عدد برگشتی 4 اولو بریزه تو یک متغیر و بقیم بریزه تو یک متغیر دیگه.

موفق باشین
بایت بایت

baranbahari1320
جمعه 10 آذر 1391, 11:13 صبح
ممنون از راهنمایی های خوبتون مفید بودن از اینکه برای سوالم وقت گذاشتین متشکرم.

hossein_sh2008
پنج شنبه 26 بهمن 1391, 18:01 عصر
با سلام خدمت دوستان
من يك روش رو ابداع كردم كه بد نيست جواب ميده گفتم براي دوستان هم بذارم(ما همه يه جورايي به اين سايت بدهكاريم)

براي ارسال دو مقدار همراه تابع از يك ليست استرينگ استفاده كردم كه شما بنا به نوع دادتون مي تونيد نوع اون رو تغيير بديد



public static List<string> mandeh_hesab1(string name_sherkat)
}
// برنامه محاسبات تابع رو اينجا مي نويسيد

//برگشت دو مقدار توسط يك تابع

string bedeh_kol = bedeh1.ToString();
string bestan_kol=bes1.ToString();
List<string> outpot = new List<string>();
outpot.Clear();

outpot.Add(bedeh_kol.ToString());
outpot.Add(bestan_kol.ToString());


return outpot ;


{






بعدش براي بكار بردن دو مقدار و استفاده از تابع




List<string> outp = new List <string>();
outp = tavabeh.mandeh_hesab1("رشته مورد نظر");
MessageBox.Show("بده:" + " " + outp[0].ToString() + " " + "طلب:" + outp[1].ToString());







اميدوارم به كارتون بياد

mhr1385
چهارشنبه 11 فروردین 1400, 17:53 عصر
با سلام من میخوام دو مقدار رو از یک تابع برگردونم اما نمیدونم چه جوری گفتن باید با کلاس بنویسم نوشتم اما باز تو برگردوندن مقادیر موندم به هیچ منبعی هم دسترسی ندارم اگه کسی یه مثال خیلی کوچک برام بنویسه ممنون میشم.من فقط امشب وقت دارم.

سلام دوست عزیز می تونید از Pair استفاده کنید
https://www.baeldung.com/java-pairs

همچنین میشه برای بازگشت 3 مورد از Triple استفاده کرد .

barnamenevisjavan
چهارشنبه 11 فروردین 1400, 18:09 عصر
برای برگشت دادن بیشتر از 1 مقدار میتونید به این صورت عمل کنید
اگر از نسخه سی شارپ 7 به بالا استفاده میکنید کافیه به این صورت تابع رو بسازید
(string, string, string) myFunc(long id)
{

return ("first", "middle", "last");
}

نحوه استفاده هم به این صورت هست:
var names = myFunc(id);
var val1 = names.Item1;
var val2 = names.Item2;
var val3 = names.Item3;