PDA

View Full Version : سوال: طراحی الگوریتم مرتب سازی داده ها به زبان C#



naderarea
دوشنبه 07 مرداد 1392, 15:21 عصر
چگونه الگوریتمی طراحی کنیم که مقالاتی را که از بانک میخونه براساس تاریخ های درجشون مرتب کنه وبه یک کنترل TreeView اضافه کنه.

manij_mhm
چهارشنبه 09 مرداد 1392, 14:55 عصر
در چه قسمتی مشکل دارید؟ کلیت موضوع یا کدنویسی؟

sohil_ww
چهارشنبه 09 مرداد 1392, 15:04 عصر
چگونه الگوریتمی طراحی کنیم که مقالاتی را که از بانک میخونه براساس تاریخ های درجشون مرتب کنه وبه یک کنترل TreeView اضافه کنه.

موقع که می خوای کوئری بنویسی مرتبش کن
با دستور order by به صورت صعودی ولی اگه می خوای نزولی این مرتب سازی انجام بشه order by desc استفاده کنید

naderarea
شنبه 12 مرداد 1392, 10:41 صبح
دوستان مثل موضوع رو خوب توضیح ندادم .
من می خوام یه کنترل TREE VIEW داشته باشم که مقالتی رو که من در بانک هست و برا اساس فیلد رشته ای تاریخ ذخیره شده به ترتیب سطوح مختلف نمایش بده .مثلا اینطوری
سال 92:
**********سطح دوم:ماه فروردین
*********************************سطح سوم:روز اول فروردین
************************************************** ****مقاله:آموزش برتامه نویسی
حالا فهمیدین ممکنه در یک زوز خاص چند مقاله وجود داشته باشه
اگر می دونید کمکم کنید

manij_mhm
شنبه 12 مرداد 1392, 13:31 عصر
شما اول بر حسب سال مرتب سازی کنید، واسه هر سال یه نود درست میشه! بعد برای مثال داده های سال 92 رو به ترتیب ماه مرتب کنید. ماه اول رو جدا کنید و داده های جدا شده رو نسبت به روز مرتب سازی کنید. تا زمانی که روز تعییر نکرده داده ها رو اضافه کنید. با تغییر روز یه نود جدید اضافه کنید و داده های بعدی رو در نود بعدی قرار بدید.

naderarea
شنبه 12 مرداد 1392, 14:52 عصر
شما اول بر حسب سال مرتب سازی کنید، واسه هر سال یه نود درست میشه! بعد برای مثال داده های سال 92 رو به ترتیب ماه مرتب کنید. ماه اول رو جدا کنید و داده های جدا شده رو نسبت به روز مرتب سازی کنید. تا زمانی که روز تعییر نکرده داده ها رو اضافه کنید. با تغییر روز یه نود جدید اضافه کنید و داده های بعدی رو در نود بعدی قرار بدید.

مهندس من این کد هارو نوشتم ولی هر کاری میکنم برنامه تو حلقه گیر می کنه و اطلاعات تکراری چاپ می کنه به نظر شما باید چی کار کرد.

#region Createing Xml File
public struct S_Article
{
public string s_articleDate { get; set; }
public int s_articleID { get; set; }
public string s_articleTime { get; set; }
}
public Dictionary<int, S_Article> S_ArticleList = new Dictionary<int, S_Article>();

public void FillTestList()
{
S_Article myart = new S_Article();
myart.s_articleID = 1;
myart.s_articleDate = "20/10/1392";
myart.s_articleTime = "";
S_ArticleList.Add(0, myart);
myart.s_articleID = 2;
myart.s_articleDate = "20/10/1392";
myart.s_articleTime = "";
S_ArticleList.Add(1, myart);
myart.s_articleID = 3;
myart.s_articleDate = "24/10/1392";
myart.s_articleTime = "";
S_ArticleList.Add(2, myart);
myart.s_articleID = 4;
myart.s_articleDate = "24/11/1392";
myart.s_articleTime = "";
S_ArticleList.Add(3, myart);
myart.s_articleID = 5;
myart.s_articleDate = "24/11/1392";
myart.s_articleTime = "";
S_ArticleList.Add(4, myart);
myart.s_articleID = 6;
myart.s_articleDate = "20/05/1393";
myart.s_articleTime = "";
S_ArticleList.Add(5, myart);
myart.s_articleID = 7;
myart.s_articleDate = "20/10/1393";
myart.s_articleTime = "";
S_ArticleList.Add(6, myart);
myart.s_articleID = 8;
myart.s_articleDate = "20/10/1394";
myart.s_articleTime = "";
S_ArticleList.Add(7, myart);
myart.s_articleID = 9;
myart.s_articleDate = "10/08/1394";
myart.s_articleTime = "";
S_ArticleList.Add(8, myart);
myart.s_articleID = 10;
myart.s_articleDate = "20/12/1395";
myart.s_articleTime = "";
S_ArticleList.Add(9, myart);
myart.s_articleID = 11;
myart.s_articleDate = "20/12/1395";
myart.s_articleTime = "";
S_ArticleList.Add(10, myart);
}
public static XmlDocument m_Doc = new XmlDocument();


public void CareateList()
{
string y;
string m;
string d;
//int o;
string xmlFile = Server.MapPath("ArticleList3.xml");
XmlTextWriter Writer = new XmlTextWriter(xmlFile, null);
Writer.WriteStartDocument();
Writer.WriteComment("Created: @ " + DateTime.Now.ToString());
Writer.WriteStartElement("ArticleList");
Writer.WriteStartElement("Article");
Writer.WriteStartElement("Years");
//int stouse = 0;
for (int tbb = 0; tbb < S_ArticleList.Count; tbb++)
{

y =S_ArticleList[tbb].s_articleDate.Substring(8, 2);
m = S_ArticleList[tbb].s_articleDate.Substring(3, 2);
d = S_ArticleList[tbb].s_articleDate.Substring(0, 2);
Writer.WriteStartElement("myyers");
Writer.WriteElementString("year", y);
Writer.WriteStartElement("MONTS");
var iy = (from a in S_ArticleList.Values
where ((a.s_articleDate.Substring(8, 2) == y)&&(a.s_articleDate.Substring(3,2)==m))
select a).ToList();
Writer.WriteElementString("month",m);
foreach (var im in iy)
{

Writer.WriteStartElement("Days");
Writer.WriteElementString("day", d);
var itd = (from a in iy
where (a.s_articleDate.Substring(0, 2) == d)
select a).ToList();
foreach (var tc in itd)
{
Writer.WriteStartElement("Ids");
var u = (from a in itd
select a.s_articleID).ToList();
foreach (var t in u)
{
Writer.WriteElementString("id", t.ToString());

}
Writer.WriteEndElement();
}
Writer.WriteEndElement();

}
Writer.WriteEndElement();
Writer.WriteEndElement();
S_ArticleList.Remove(tbb);
}
Writer.WriteEndElement();
Writer.WriteEndElement();
Writer.WriteEndElement();


Writer.Close();

}
#endregion

manij_mhm
شنبه 12 مرداد 1392, 16:51 عصر
کد رو به صورت زیر تغییر بدید:


public void CareateList()
{
string y;
string m;
string d;
List<int> l = new List<int>();
for (int tbb = 1; tbb <= S_ArticleList.Count; tbb++)
{
if (l.Contains(tbb)) continue;

y = S_ArticleList[tbb].s_articleDate.Substring(8, 2);
var iy = (from a in S_ArticleList.Values where ((a.s_articleDate.Substring(8, 2) == y))select a).ToList();//(a.s_articleDate.Substring(3, 2) == m)
for (int tbb1 = 0; tbb1 < iy.Count; tbb1++)
{
if (l.Contains(iy[tbb1].s_articleID)) continue;
m = iy[tbb1].s_articleDate.Substring(3, 2);
var im = (from a in iy where ((a.s_articleDate.Substring(3, 2) == m)) select a).ToList();
for (int tbb2 = 0; tbb2 < im.Count; tbb2++)
{
if (l.Contains(im[tbb2].s_articleID)) continue;
d = im[tbb2].s_articleDate.Substring(0, 2);
var itd = (from a in im where (a.s_articleDate.Substring(0, 2) == d) select a).ToList();
var u = (from a in itd select a.s_articleID).ToList();
foreach (var t in u)
{
richTextBox1.Text += t.ToString() + "\n";
l.Add(t);
}
}
}
}
}

naderarea
یک شنبه 13 مرداد 1392, 08:16 صبح
بسیار عالی بود من یکم تغییرش دادم و در یک فایل xml ذخیره ش کردم واقعا ازتون ممنونم .متشکرم
:لبخندساده::تشویق::تشویق::تش یق::تشویق::تشویق::تشویق::تشو ق::تشویق::تشویق::تشویق: