گرفتن مقدار 4 کاربر برتر

#C

توسط thearrow در 6 سال پیش
0 24.4k 5 6 سال پیش
thearrow alideveloper comodo barnamenevis
0

سلام
من یک برنامه نوشتم (بازی اعداد) که مثلا 10 تا کاربر داره ( یا حتی شاید n تا کاربر داشته باشیم یعنی مشخص نباشه ) که هرکدوم یک مقدار عددی دارند :

reza:10
iman:25
ali:85
ramin:74
omid:13
raha:8
mehran:547
shahin:74
mahan:11
mehrdad:14

چطوری کدی بنویسم که 4 کاربری که اعداد بیشتری رو دارند رو نشون بده ؟ ( حتی اگه اعداد اون 4تا مثله هم باشه و باید بیشتر از بقیه باشه )
یعنی این 4 تا:

mehran:547
ali:85
ramin:74
shahin:74

و به این صورت نمایش بده :

1. "mehran"  Emtiaz: 547
2. "ali"  Emtiaz:85
3. "ramin"  Emtiaz:74
4. "shahin"  Emtiaz:74

ممنون

0

سلام
هر کدومو تو آرایه بریز و بعد sort کن! به همین راحتی

[CSHARP]
// array of custom type
User[] users = new User[3] { new User("Betty", 23), // name, age
new User("Susan", 20),
new User("Lisa", 25) };
[/CSHARP]

مرتب سازی:
[CSHARP]
// sort array by age
Array.Sort(users, delegate(User user1, User user2) {
return user1.Age.CompareTo(user2.Age); // (user1.Age - user2.Age)
});
// write array (output: Susan20 Betty23 Lisa25)
foreach (User user in users) Console.Write(user.Name + user.Age + " ");
[/CSHARP]

0

ممنون فقط چه Reference ـی رو به پروژه اضافه کنم ؟
من

using Microsoft.VisualBasic.ApplicationServices;

رو اضافه کردم اما اشتباهه انگار

ممنون

0

سلام اون کدی که ایشون گذاشتن بنظر میرسه فقط مثاله ولی روش کلی همینه

0

شما باید قبل از اینکه داده ها رو تو لیست بذاری مرتب کنی که بعدش مجبور نشی دوباره مرتب کنی و کد اضافه بنویسی

0

کد:
[CSHARP]
string[] items = new string[listBox1.Items.Count];
listBox1.Items.CopyTo(items, 0);
Array.Sort(items, delegate(string a, string b)
{
int ascore = int.Parse( a.Substring(a.IndexOf(':') + 1));
int bscore = int.Parse( b.Substring(b.IndexOf(':') + 1));
return ascore == bscore ? 0 : (ascore < bscore ? 1 : -1);
});
foreach (string s in items)
{
Console.WriteLine(s.Replace(":", " score: "));
}
[/CSHARP]

خوش آمدید

برای طرح سوال، ایجاد بحث و فعالیت در سایت نیاز است ابتدا وارد حساب کاربری خود شوید. در صورتی که هنوز عضو سایت نیستید میتوانید در عرض تنها چند ثانیه ثبت نام کنید.