PDA

View Full Version : سوال: معادله درجه دوم



sahel013
پنج شنبه 23 اردیبهشت 1395, 20:15 عصر
سلام . این کد معادله درجه دومه در یک کلاس جداگانست
ولی تو اجرا خطا میده.یعنی تو قسمت چاپ خروجی اررور میده
کسی میتونه کمک کنه کجای کد اشتباه نوشتم؟ ممنونم میشم
Console.WriteLine("please a number enter a zarayebe tx+py=v");
int t = int.Parse(Console.ReadLine());
int p = int.Parse(Console.ReadLine());
int v = int.Parse(Console.ReadLine());
Class4 oclass4 = new Class4();
Console.WriteLine("root:");
Console.WriteLine(oclass4.za(t, p, v));
و کلاس این برنامه:
class Class4
{
public float za(int t, int p, int v)
{
float s, o = 0;
float D = (p * p) - (4 * t * v);
if (D > 0)
{
double s;
s = ((-p -Math.Sqrt(D)) / (2 * t));
double o;
o = ((-p +Math.Sqrt(D)) / (2 * t));
}
return s;
}
}

محمد رضا فاتحی
پنج شنبه 23 اردیبهشت 1395, 20:47 عصر
سلام...
چه خطایی می ده؟؟
ضمنا چون ممکنه دو تا خروجی داشته باشید بهتره نوع خروجی رو بصورت آرایه بگیرید

sahel013
پنج شنبه 23 اردیبهشت 1395, 21:00 عصر
publicdouble za(double t, double p, double v)
{
double s, o = 0;
double D = (p * p) - (4 * t * v);


if (D > 0)
{
s = ((-p -Math.Sqrt(D)) / (2 * t));
o = ((-p +
Math.Sqrt(D))/(2 * t));
double n = s;
double u = o;
}
return n & u;
}

با تغییراتی که انجام دادم الان جواب دلتارو صحیح درمیاره فقط از if به بعد اجرا نمیشه

ژیار رحیمی
پنج شنبه 23 اردیبهشت 1395, 21:57 عصر
دوست گرامی برای منفی کردن مقدار یک متغییر نمیشه از علامت منها کنار آن استفاده کرد.باید متغییر رو در (1-) ضرب کرد

if(t==0)return 0;
s = ((-1*p) -Math.Sqrt(D)) / (2 * t));
o = ((-1*p) + Math.Sqrt(D))/(2 * t));

sahel013
پنج شنبه 23 اردیبهشت 1395, 22:42 عصر
دوست گرامی برای منفی کردن مقدار یک متغییر نمیشه از علامت منها کنار آن استفاده کرد.باید متغییر رو در (1-) ضرب کرد

if(t==0)return 0;
s = ((-1*p) -Math.Sqrt(D)) / (2 * t));
o = ((-1*p) + Math.Sqrt(D))/(2 * t));

ممنون از پاسخگوییتون.اما برای returnکه دوجواب دارم باید چطوری بهش معرفی کنم؟

ژیار رحیمی
پنج شنبه 23 اردیبهشت 1395, 23:35 عصر
یک راه ساده ش ارسال پارامترهای تابع بصورت ref و راه دیگر بهتر از آن متغییر های nو u را بصورت سراسری تعریف کنی که داخل تابع به آنها دسترسی داشته باشی.من راه اول رو نوشتم.

public void za(double t, double p, double v,ref double n,ref double u)
{
double D = (p * p) - (4 * t * v);
if (D > 0)
{
if(t==0)return 0;
n = ((-1*p) -Math.Sqrt(D)) / (2 * t));
u = ((-1*p) + Math.Sqrt(D))/(2 * t));
}
}


//نحوه فراخوانی
double n=0;
double u=0;
za(10,12,14,ref n,ref u);
//نتیجه تابع در دو متغییر n,u قرار میگیرد