PDA

View Full Version : سوال: توی این برنامه چطور یک در میان عمل جمع و تفریق انجام دهم؟



sahel65
دوشنبه 19 اردیبهشت 1390, 15:32 عصر
سلام دوستان

وقت بخیر؛

این عنوان سوالی است که برنامش رو نوشتم؛



69739




حال قبل از سوال ، آیا به نظر شما جمله دوم نباید x به توان 3 باشه؟؟آخه طبق فرمول هم که حساب کنیم هر عددی به جای n بذاریم، 2 بدست نمیاد!

این کدی هست که من براش نوشتم:




using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class dd
{
public class Myprog
{
public int pow;
public long _fact;
public double _yournum;
public double _calc4even;
public double _final;
public void Myfunc(double x, int n)
{
///============ calculate
for (int i = 1; i <= n; i += 2)
{
pow = i;
_yournum = x;
_fact = (fact(pow));
//_div = f;
_calc4even = ((Math.Pow(_yournum, (pow))) / _fact);
_final =_final+_calc4even;
}
}
//========= end calculate
long fact(int a)
{
if (a <= 1)
{
return 1;
}
else
{
long b = a * fact(a - 1);
return b;
}
}
}
static void Main(string[] args)
{
// Console.WriteLine("Enter Number X:");
// double x = double.Parse(Console.ReadLine());
// Console.WriteLine("Enter Number N:");
// int n = int.Parse(Console.ReadLine());
Myprog dd = new Myprog();
dd.Myfunc(3,5);
Console.WriteLine(dd._final);
}
}
}


فقط یه جا رو نتونستم الگوریتمش رو خوب پیاده کنم. برنامه من الان همه جوابها رو با همدیگه جمع میکنه و در اینجا که بعنوان مثال من x رو 3 و N رو 5 دادم درست جواب میده و تست شده.

حالا اگه بخوام طبق سوال یک در میان تفریق و جمع کنه چه راه حلی به ذهنتون میرسه؟؟

آیا مثلا قبل از رفتن به تابع یه نوع bool بگیرم و هربار true و false کنم و طبق اون عمل تفریق و جمع رو انجام بدم؟؟

متشکرم.

exlord
دوشنبه 19 اردیبهشت 1390, 18:00 عصر
public double Func(double x, int n)
{
bool plus = true;
double sum = 0;

for (int i = 1; i <= (2 * n - 1); i += 2)
{
double s = Math.Round(Math.Pow(x, i) / Fact(i), 4);
if (plus)
sum += s;
else
sum -= s;
plus = !plus;
}
return sum;
}

private long Fact(int a)
{
if (a <= 1)
return 1;
else
return a * Fact(a - 1);
}