PDA

View Full Version : اولین برنامه من : نظر بدید



garamaleki
یک شنبه 17 شهریور 1392, 19:22 عصر
سلام
امروز شروع کردم یک برنامه کوچک ولی نسبت به برنامه های قبلیم بزرگ نوشتم
نظرتون در موردش چیه؟
کلاس Cubic

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace WindowsFormsApplication1
{
class Cubic
{
private double[] x = new double[3];
private double a, b, c, d, p, q, z;
public double A
{
set
{
a = value;
}
}
public double B
{
set
{
b = value;
}
}
public double C
{
set
{
c = value;
}
}
public double D
{
set
{
d = value;
}
}

public bool AdadMohumi;

public double Calculatex1()
{

if (T2(p) + T3(q) < 0)
{
p = ((-1 * T3(b) / (27 * T3(a))) + ((b * c) / (6 * T2(a))) - (d / (2 * a)));
q = (c / (3 * a) - T2(b) / (9 * T2(a)));
z = -1 * b / (3 * a);
AdadMohumi = true; return 0;

}
else
{
p = ((-1 * T3(b) / (27 * T3(a))) + ((b * c) / (6 * T2(a))) - (d / (2 * a)));
q = (c / (3 * a) - T2(b) / (9 * T2(a)));
z = -1 * b / (3 * a);
AdadMohumi = false;
x[0] = Cubic_root(p + Math.Sqrt(T2(p) + T3(q))) + Cubic_root(p - Math.Sqrt(T2(p) + T3(q))) + z;
return x[0];
}
}

private double Cubic_root(double t)
{
if (t >= 0)
return Math.Pow(t, 1.0 / 3.0);
else
{
double t2 = -1 * t;
t2 = Math.Pow(t2, 1.0 / 3.0);
t2 *= -1;
return t2;
}
}
private double T3(double x)
{
return Math.Pow(x, 3);
}
private double T2(double x)
{
return Math.Pow(x, 2);
}

}
}


کلاس اصلی form


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 WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
label6.Text = "";
try
{
Cubic myCubic = new Cubic();
myCubic.A = Convert.ToDouble(textBox1.Text);
myCubic.B = Convert.ToDouble(textBox2.Text);
myCubic.C = Convert.ToDouble(textBox3.Text);
myCubic.D = Convert.ToDouble(textBox4.Text);
if (myCubic.AdadMohumi == true)
{
label6.Text = "";
MessageBox.Show("جوابی در محدوده اعداد حقیقی پیدا نشد");
}
else
{
if ((myCubic.Calculatex1() < 0.0000000000000001 && myCubic.Calculatex1() > 0) || (myCubic.Calculatex1() > -0.0000000000000001 && myCubic.Calculatex1() <0))
label6.Text = "0";
else
label6.Text = myCubic.Calculatex1().ToString();
}
}
catch(FormatException)
{
MessageBox.Show("عدد وارد کنید!");
}

}

private void Form1_Load(object sender, EventArgs e)
{
this.MaximizeBox = false;
}
}
}




لینک دانلود : http://bayanbox.ir/id/3979496755486037885?download
توضیح درباره برنامه : این برنامه مولفه های A,B,C,D یک معادله درجه 3 رو می گیره و یک جوابشو(اگه حقیقی باشه) می ده
* یک چیزی الان به ذهنم رسید که باید چک می کردم که A صفرنباشه

sohil_ww
یک شنبه 17 شهریور 1392, 19:49 عصر
دوست عزیز
چرا سورسو قرار ندادی اینجوری بهتر نبود ؟!

garamaleki
یک شنبه 17 شهریور 1392, 19:53 عصر
بفرمایید : http://bayanbox.ir/id/6284330667149342502?download

sohil_ww
یک شنبه 17 شهریور 1392, 20:01 عصر
برای اولین برنامه چیزه خوبیه و عالیه افرین

negin_7278
یک شنبه 17 شهریور 1392, 20:02 عصر
public double Calculatex1() {

if (T2(p) + T3(q) < 0)
{
p = ((-1 * T3(b) / (27 * T3(a))) + ((b * c) / (6 * T2(a))) - (d / (2 * a)));
q = (c / (3 * a) - T2(b) / (9 * T2(a)));
z = -1 * b / (3 * a);
AdadMohumi = true; return 0;

}
else
{
p = ((-1 * T3(b) / (27 * T3(a))) + ((b * c) / (6 * T2(a))) - (d / (2 * a)));
q = (c / (3 * a) - T2(b) / (9 * T2(a)));
z = -1 * b / (3 * a);
AdadMohumi = false;
x[0] = Cubic_root(p + Math.Sqrt(T2(p) + T3(q))) + Cubic_root(p - Math.Sqrt(T2(p) + T3(q))) + z;
return x[0];
}


توضیح می دید ؟

garamaleki
یک شنبه 17 شهریور 1392, 20:25 عصر
بله این قسمتشو برای این درست کرده بودم که اگه داخل رادیکال منفی بود جواب رو با i (رادیکال منفی 1) نشون بده , بعدش دیم یکم طولانی د از تو کلاس اصلی پاکش کردم ولی اون جا مثل اینکه جا مونده