PDA

View Full Version : سوال: مرتب سازی



behzad004
پنج شنبه 05 آذر 1394, 07:42 صبح
سلام دوستان خسته نباشید من ی برنامه دارم مینویسم که نام و نام خانوادگی و حقوق تعدادی کارمند رو میگیره و چاپ میکنه حالا میخوام متد sort بنویسم براش که به ترتیب حقوق این کاربرا رو ک دریافت کرد مرتب کنه و چاپ کنه لطفاکمک کنید
کدهایی که تا الان نوشتم
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication12
{
class Program
{
static void Main(string[] args)
{
Console.Write("Enter number of employee:");
Int16 n = Convert.ToInt16(Console.ReadLine());
//int32[] ary=new int32[n];
employee[] emp = new employee[n];
for (int i = 0; i < n; i++)
{
emp[i] = new employee();
emp[i].get_info();
}
Console.ReadKey();
}
}
class employee
{
private String name, family;
Int64 salary;
public void get_info()
{
Console.Write("Name :");
name = Console.ReadLine();
Console.Write("Family :");
family = Console.ReadLine();
Console.Write("salary :");
salary = Convert.ToInt64(Console.ReadLine());
}
public void put_info()
{
Console.WriteLine("Name :{0}", name);
Console.WriteLine("Family:{0}", family);
Console.WriteLine("salary:{0}", salary);
}
public Int64 SALARY()
{
return salary;
}
}
}



فقط با کنسول میخوام بنویسم شی گرا نیست برنامم.

AmiN0012
پنج شنبه 05 آذر 1394, 13:27 عصر
دوست عزیز شما برای مرتب کردن از مرتب سازی حبابی یا bubble sort استفاده کنید.
توضیح لینک زیر:
http://open-mind.ir/1392/%D8%A7%D9%84%DA%AF%D9%88%D8%B1%DB%8C%D8%AA%D9%85-%D9%87%D8%A7%DB%8C-%D9%85%D8%B1%D8%AA%D8%A8-%D8%B3%D8%A7%D8%B2%DB%8C%D9%85%D8%B1%D8%AA%D8%A8-%D8%B3%D8%A7%D8%B2%DB%8C-%D8%AD%D8%A8%D8%A7%D8%A8%DB%8C/

ژیار رحیمی
پنج شنبه 05 آذر 1394, 13:37 عصر
var sortedList = emp.OrderBy(c => c.SALARY());
foreach (var item in sortedList)
item.put_info();

behzad004
شنبه 07 آذر 1394, 09:21 صبح
var sortedList = emp.OrderBy(c => c.SALARY());
foreach (var item in sortedList)
item.put_info();


ممنون فقط این برنامه رو کجای برنامه خودم اضافه کنم؟

ژیار رحیمی
شنبه 07 آذر 1394, 10:32 صبح
تو بخش Main دوتا Option به کاربر نشون بده فرضا اگر کاربر عدد 1 رو زد عملیات ورودی و پرگردن آرایه و اگر 2 رو زد عملیات مرتب سازی کد مرتب سازی رو اونجا بنویس

behzad004
شنبه 07 آذر 1394, 10:42 صبح
برنامه برای من خطا میده چرا؟
عکس زیر رو ببینید

http://8pic.ir/images/64qf5swpcau7jxqzgmx0.jpg

Mahmoud.Afrad
یک شنبه 08 آذر 1394, 14:13 عصر
یک کلاس comparer نیاز داری

class SalaryComparer : IComparer<employee>
{
public int Compare(employee x, employee y)
{
return x.SALARY().CompareTo(y.SALARY());
}
}

به صورت زیر میتونی sort کنی

Array.Sort(emp, new SalaryComparer());

behzad004
یک شنبه 08 آذر 1394, 14:25 عصر
عاقا لطفا این برنامه رو کامل کنید برام من کاملا گیج شدم نصفه نصفه ندین لطفا :گریه:

ژیار رحیمی
یک شنبه 08 آذر 1394, 14:43 عصر
دوست گرامی شما باید قبل از مرتب سازی آرایه رو پر کنی با آرایه خالی خطا ایجاد ایجاد میشه

Console.Write("Enter number of employee:");
Int16 n = Convert.ToInt16(Console.ReadLine());
employee[] emp = new employee[n];
//عملیات گرفتن دادهای ورودی
for (int i = 0; i < n; i++)
{
emp[i] = new employee();
emp[i].get_info();
}
//عملیات مرتب سازی
var sortedList = emp.OrderBy(c => c.SALARY());
foreach (var item in sortedList)
item.put_info();
Console.ReadKey();

behzad004
دوشنبه 09 آذر 1394, 07:54 صبح
ممنونم برنامه درسته ولی میخوام از بزرگ به کوچک نشون بده این برنامه از کوچک به بزرگ نشون میده

ژیار رحیمی
دوشنبه 09 آذر 1394, 08:47 صبح
emp.OrderByDescending(c => c.SALARY());