PDA

View Full Version : برنامه الگوریتم مهلت زمانی



daniyaltjm
جمعه 09 خرداد 1393, 20:22 عصر
دوستان این برنامرو نوشتم ولی انگار مشکل داره کسی می تونه درستش کنه؟ برای پروژه می خوام .ممنونمشکل من اینه که اگه عدد های تکست باکس کامل پر نشن مثلا اگه 3 تا از تکست باکسای اول مربوط به زمان پردازش و سود پردازش فقط پر بشن مشکل شکل زیر بوجود میاد که سود ها رو قاطی نشون میده و زمان اجرا هارو جدا!!! کسی میتونه درستش کنه ؟
http://www.xum.ir/images/2014/05/29/1uy7El.jpg

لینک دانلود (http://www.uplooder.net/cgi-bin/dl.cgi?key=6e914caa4f50020f4ed1490d0f524dc3)

Mahmoud.Afrad
جمعه 09 خرداد 1393, 21:04 عصر
باید یک ساختار ایجاد کنی تا در صورت نیاز به جابجایی کل یک job جابجا بشه.

مرتب سازی بر چه اساسی صورت میگیره ؟ برحسب زمان اجرا به صورت صعودی؟ برحسب سود؟ بر حسب نسبت سود به زمان اجرا؟

daniyaltjm
جمعه 09 خرداد 1393, 21:31 عصر
باید یک ساختار ایجاد کنی تا در صورت نیاز به جابجایی کل یک job جابجا بشه.

مرتب سازی بر چه اساسی صورت میگیره ؟ برحسب زمان اجرا به صورت صعودی؟ برحسب سود؟ بر حسب نسبت سود به زمان اجرا؟

ممنون میشم اگه ویرایشش کنی فردا باید برم ارائه بدم . بر حسب سود به صورت نزولی یعنی اون که سود بیشتری داره اول اجرا میشه و به همین صورت ... تا کمترین سود آخر ..
اگه هم که نمی تونی درستش کنی من یه شرط بزارم که تا وقتی تمام تکست باکسها پر نشده اجرا نشه.

Mahmoud.Afrad
جمعه 09 خرداد 1393, 21:53 عصر
public partial class Form1 : Form
{
struct Job
{
public int Id { get; set; } // شماره
public int ExecutionTime { get; set; } // زمان اجرا
public int Gain { get; set; } // سود

public override string ToString()
{
return string.Format("JobId : {0} \t ExecutionTime : {1} \t Gain : {2}", this.Id, this.ExecutionTime, this.Gain);
}
}

List<Job> jobs;

public Form1()
{
InitializeComponent();


}

private void button1_Click(object sender, EventArgs e)
{
listBox1.Items.Clear();
jobs = new List<Job>();
if (textBox1.Text != "")
{
AddJob(1, textBox1.Text, textBox11.Text);
}
if (textBox2.Text != "")
{
AddJob(2, textBox2.Text, textBox12.Text);
}
if (textBox1.Text != "")
{
AddJob(3, textBox3.Text, textBox13.Text);
}
if (textBox4.Text != "")
{
AddJob(4, textBox4.Text, textBox14.Text);
}
if (textBox5.Text != "")
{
AddJob(5, textBox5.Text, textBox15.Text);
}
if (textBox1.Text != "")
{
AddJob(6, textBox6.Text, textBox16.Text);
}
if (textBox7.Text != "")
{
AddJob(7, textBox7.Text, textBox17.Text);
}
if (textBox8.Text != "")
{
AddJob(8, textBox8.Text, textBox18.Text);
}
if (textBox9.Text != "")
{
AddJob(9, textBox9.Text, textBox19.Text);
}
if (textBox10.Text != "")
{
AddJob(10, textBox10.Text, textBox20.Text);
}
Job temp1;
for (int i = jobs.Count - 1; i > 0; i--)
{
for (int j = 0; j < i; j++)
{
if (jobs[j].Gain < jobs[j + 1].Gain)
{
temp1 = jobs[j];
jobs[j] = jobs[j + 1];
jobs[j + 1] = temp1;
}
}
}

/*
//moratab sazi job
Job temp2;
for (int i = 8; i > 0; i--)
{
for (int j = 0; j < i; j++)
{
if (jobs[j].ExecutionTime > jobs[j + 1].ExecutionTime)
{
temp2 = jobs[j];
jobs[j] = jobs[j + 1];
jobs[j + 1] = temp2;
}
}
}
*/

for (int i = 0; i < 9; i++)
{
if (jobs[i].ExecutionTime != 0 && jobs[i].Gain != 0)
{
listBox1.Items.Add(jobs[i].ToString());
}
}
}

private void AddJob(int _id, string _execTime, string _gain)
{
Job j = new Job()
{
Id = _id,
ExecutionTime = Convert.ToInt32(_execTime),
Gain = Convert.ToInt32(_gain)
};
jobs.Add(j);
}
}

daniyaltjm
شنبه 10 خرداد 1393, 00:55 صبح
ممنون ولی گیج شدم!!!

Mahmoud.Afrad
شنبه 10 خرداد 1393, 02:00 صبح
یک struct تعریف کردم با سه مولفه شماره شناسایی، زمان اجرا و سود. به ازای هر job (تکست باکسها) یک نمونه از این ساختمان داده تعریف و مقداردهی شده و به لیست(یا آرایه یا صف) کارها اضافه میشه. در مرحله بعد بر حسب سود به صورت نزولی مرتب میشه(همون متود خودت هست) در آخر هم jobها به ترتیب سود بیشتر اضافه میشن به لیست باکس.

daniyaltjm
شنبه 10 خرداد 1393, 10:03 صبح
ممنون ولی اگه میشه از لیست استفاده نکنید می خوام خیلی ساده باشه با آرایه خوبه , کد با لا هم اجرا کردم خطا داد ! لطفا کمک کنید استاد تا 2 روز دیگه وقت داده ...

این کد هم اگه میشه ساده کنید اصلا نمیفهمم!

public override string ToString() {
return string.Format("JobId : {0} \t ExecutionTime : {1} \t Gain : {2}", this.Id, this.ExecutionTime, this.Gain);
}

daniyaltjm
شنبه 10 خرداد 1393, 10:31 صبح
دوست عزیز , یکم فکر کردم خیلی مثل هلو درستش کردم حال کن ببین به این میگن تفکر برنامه نویسی... بدون کدهای پیچیده:

using System;using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;


namespace time_schedule
{




public partial class Form1 : Form
{




public Form1()
{
InitializeComponent();
}


int[] sod = new int[10];






private void button1_Click(object sender, EventArgs e)
{

listBox1.Items.Clear();
// sod////////////////////////////////
if (textBox11.Text != "")
sod[0] = Convert.ToInt32(textBox11.Text);
if (textBox12.Text != "")
sod[1] = Convert.ToInt32(textBox12.Text);
if (textBox13.Text != "")
sod[2] = Convert.ToInt32(textBox13.Text);
if (textBox14.Text != "")
sod[3] = Convert.ToInt32(textBox14.Text);
if (textBox15.Text != "")
sod[4] = Convert.ToInt32(textBox15.Text);
if (textBox16.Text != "")
sod[5] = Convert.ToInt32(textBox16.Text);
if (textBox17.Text != "")
sod[6] = Convert.ToInt32(textBox17.Text);
if (textBox18.Text != "")
sod[7] = Convert.ToInt32(textBox18.Text);
if (textBox19.Text != "")
sod[8] = Convert.ToInt32(textBox19.Text);
if (textBox20.Text != "")
sod[9] = Convert.ToInt32(textBox20.Text);
///////////////////////////////////////////////////////////




///////// moratab sazi sod/////////////////////////////////
int temp1;
for (int i = 9; i > 0; i--)
{
for (int j = 0; j < i; j++)
{
if (sod[j] < sod[j + 1])
{
temp1 = sod[j];
sod[j] = sod[j + 1];
sod[j + 1] = temp1;
}
}


}
/////////////////////////////////////////////////////////






for (int i = 0; i <= 9; i++)
{
if (sod[i].ToString() == textBox11.Text && textBox1.Text!="" && textBox11.Text !="")
listBox1.Items.Add("Job" + (i + 1) + " " + textBox1.Text + " sood " + sod[i]);
//
else if (sod[i].ToString() == textBox12.Text && textBox2.Text != "" && textBox12.Text != "")
listBox1.Items.Add("Job" + (i + 1) + " " + textBox2.Text + " sood " + sod[i]);
//
else if (sod[i].ToString() == textBox13.Text && textBox3.Text != "" && textBox13.Text != "")
listBox1.Items.Add("Job" + (i + 1) + " " + textBox3.Text + " sood " + sod[i]);
//
else if (sod[i].ToString() == textBox14.Text && textBox4.Text != "" && textBox14.Text != "")
listBox1.Items.Add("Job" + (i + 1) + " " + textBox4.Text + " sood " + sod[i]);
//
else if (sod[i].ToString() == textBox15.Text && textBox5.Text != "" && textBox15.Text != "")
listBox1.Items.Add("Job" + (i + 1) + " " + textBox5.Text + " sood " + sod[i]);
//
else if (sod[i].ToString() == textBox16.Text && textBox6.Text != "" && textBox16.Text != "")
listBox1.Items.Add("Job" + (i + 1) + " " + textBox6.Text + " sood " + sod[i]);
//
else if (sod[i].ToString() == textBox17.Text && textBox7.Text != "" && textBox17.Text != "")
listBox1.Items.Add("Job" + (i + 1) + " " + textBox7.Text + " sood " + sod[i]);
//
else if (sod[i].ToString() == textBox18.Text && textBox8.Text != "" && textBox18.Text != "")
listBox1.Items.Add("Job" + (i + 1) + " " + textBox8.Text + " sood " + sod[i]);
//
else if (sod[i].ToString() == textBox19.Text && textBox9.Text != "" && textBox19.Text != "")
listBox1.Items.Add("Job" + (i + 1) + " " + textBox9.Text + " sood " + sod[i]);
//
else if (sod[i].ToString() == textBox20.Text && textBox10.Text != "" && textBox20.Text != "")
listBox1.Items.Add("Job" + (i + 1) + " " + textBox10.Text + " sood " + sod[i]);
}




////// 0 kardan arrye//////////
for (int i = 0; i <= 9; i++)
sod[i] = 0;
//////////////////////////////


}



}
}

saya2000
جمعه 08 خرداد 1394, 19:36 عصر
سلام
در سطر 72 ایراد میده