PDA

View Full Version : سوال: راهنمایی در مورد مرتب کردن خروجی یه برنامه محاسباتی بر اساس یکی از جوابها ؟



papeli_83
یک شنبه 21 خرداد 1391, 22:20 عصر
با سلام
من دارم یه برنامه محاسباتی می نویسم که خروجی برنامم دارای تعداد زیادی جواب داره (مثلا 1000 تا )
در واقع یه چیری شبیه این

جواب 1 : x=100 y=200 a=50 p=12.5

جواب 2 : x=10 y=1000 a=60 p=15.5
.
.

جواب n ام

حالا بایستی برنامم بتونه بر اساس تعداد جواب هایی که کاربر تعیین می کنه ( مثلا 50 تا ) جواب ها بر اساس متغییر p بصورت نزولی مرتب کنه.

( من با متلب تونستم کاربالا رو انجام بدم ( به این صورت که ابتدا یه آرایه دو بعدی تعرف کردم( d(x,jکه x تعداد جوابی که کاربر می خواد ببینه , هستش ( مثلا 30 تا از 1000 تا جواب ) و j تعداد پارمترهای هر جواب هستش و بعد توسط دستور sortrows جواب ها رو بر اساس یکی از پارمترها سورت کردم ) ;اما در اینجا نموتونم تابع مورد نظر رو پیدا کنم ( البته از array.sort استفاده کردم ولی فقط از آرایه یک بعدی پشتیبانی می کنه ).
خلاصه اینکه بد جوری گیر کردم:گریه: ; از دوستان خواهش می کنم لطفا منو راهنمایی کنن )

با تشکر

hhsaffar
دوشنبه 22 خرداد 1391, 12:16 عصر
جوابهاتون رو چه طور نگه میدارید؟
من فرض میکنم جوابهاتون رو در آرایه‌ای یک بعدی به نام answers نگه‌میدارید و هر جواب در شئی نگهداری میشه که فیلدی به اسم p داره.
کد زیر آرایه رو سورت میکنه:
answers = answers.OrderBy(x => x.p).ToArray();
فقط توجه کنید در بالای کدتون این خط رو داشته باشید:
using System.Linq;

با Array.Sort هم میشد این کار رو کرد منتهی قدری پیچیده‌تره:
http://www.csharp-examples.net/sort-array/

tooraj_azizi_1035
دوشنبه 22 خرداد 1391, 12:25 عصر
سلام


// sort by column i
object[][] array = ...;
int i = ...;
Array.Sort(array, delegate(object[] x, object[] y)
{
return (x[ i ] as IComparable).CompareTo(y[ i ]);
});

مقدار i بعد دلخواه است.

papeli_83
سه شنبه 23 خرداد 1391, 20:43 عصر
جوابهاتون رو چه طور نگه میدارید؟
من فرض میکنم جوابهاتون رو در آرایه‌ای یک بعدی به نام answers نگه‌میدارید و هر جواب در شئی نگهداری میشه که فیلدی به اسم p داره.
کد زیر آرایه رو سورت میکنه:
answers = answers.OrderBy(x => x.p).ToArray();
فقط توجه کنید در بالای کدتون این خط رو داشته باشید:
using System.Linq;

با Array.Sort هم میشد این کار رو کرد منتهی قدری پیچیده‌تره:
http://www.csharp-examples.net/sort-array/
با سلام و با تشکر از شما دوست عزیز

همون طور که تو پست اولمم گفتم هر جواب من داراری تعدادی پارامتر هستش ( حدودا 15 تا پارامتر ) حالا می خوام بر اساس یکی از اون پارامترها جواب هامو سورت کنم ( در واقع می شه گفت یه ماتریس دو در دو میشه که سطر های این ماتریس تعذاذ جواب های ماست و ستون های اون ( 15 تا ) پارامترهای هر جوابه );
اما در مورد کدی که نوشتین می شه یه خورده بیشتر توضیح بدین ( البته اگه جسارت نباشه با یه مثال )

papeli_83
سه شنبه 23 خرداد 1391, 20:51 عصر
سلام


// sort by column i
object[][] array = ...;
int i = ...;
Array.Sort(array, delegate(object[] x, object[] y)
{
return (x[ i ] as IComparable).CompareTo(y[ i ]);
});

مقدار i بعد دلخواه است.

با سلام و با تشکر از شما
میشه لطف می کنین و یه کم بیشتر توضیح بدین , البته اگه براتون امکان داره با مثال عددی باشه:خجالت: ( من رشتم برقه و در ضمن با متلب کار می کردم , الان تقریبا یه ساله که برنامه نوبسی با وی بی دات نت رو شروع کردم , این سوالو چند هفته پیش تو تالار مربوط به وی بی دات نت مطرح کردم ولی متاسفانه جوابی نگرفتم )

papeli_83
پنج شنبه 25 خرداد 1391, 17:32 عصر
با سلام

از دوستان کسی نیست که بتونه کمک کنه