نمایش نتایج 1 تا 8 از 8

نام تاپیک: نجوه محاسبه چند عمل در برنامه ماشین حساب ؟

  1. #1

    Post نجوه محاسبه چند عمل در برنامه ماشین حساب ؟

    سلام خدمت همه اساتید
    در برنامه ماشین حساب که طراحی نموده ام به طور هم زمان فقط قادر به انجام یک عملگر می باشد
    یعنی فقط می توان 2را ضربدر 3 کرد و مساوی را زد و دبار عملگر بعدی
    حالا شوال ؟ اگه بخوام مثلا 2*3+4/2 کنم و جوابش رو بهم بده چکار باید بکنم ؟
    توضیح : در برنامه فقط دو تا متغیر وجود داره

  2. #2

    نقل قول: نجوه محاسبه چند عمل در برنامه ماشین حساب ؟

    با سلام

    بهترین حالت استفاده از الگوریتم های PreOrder و PostOrder می باشد

    در مورد این دو سرچ کنی هم کد و هم الگوریتم هاشو پیدا می کنی

  3. #3

    نقل قول: نجوه محاسبه چند عمل در برنامه ماشین حساب ؟

    من قبلا برای این کار یک کلاس هم طراحی کردم

    حالشو ببر

    public class Calculator
    {
    private string[] _operator = {"(","+", "-", "*", "/" , " "};
    private int[] _weightOPerator = { 0, 12, 12, 13, 13 ,13};


    private string _strString ;
    public string strString
    {
    get { return (_strString); }
    set { _strString = value; }

    }

    public double Calculate()
    {
    System.Collections.Generic.List<char> Postfix = new System.Collections.Generic.List<char>();

    PostfixtoInfix(strString,ref Postfix);
    return(Proccess(Postfix));
    }

    private void PostfixtoInfix(string infix,ref System.Collections.Generic.List<char> Postfix)
    {
    System.Collections.Stack stack = new System.Collections.Stack();
    char op=' ';

    for (int i = 0; i < infix.Length; i++)
    {
    if (infix[i] == '(')
    stack.Push('(');
    else if (infix[i] == ')')
    {
    char tmp;
    while (stack.Count != 0)
    {
    tmp = (char)stack.Pop();
    if (tmp != '(')
    Postfix.Add(tmp);
    else
    break;
    }
    }
    else if (infix[i] >= '0' && infix[i] <= '9')
    Postfix.Add(infix[i]);
    else
    {
    try
    {
    op = (char)stack.Pop();
    stack.Push(op);
    }
    catch { }
    //op >= str
    if (!Pred(op, strString[i])==true || stack.Count==0 )
    {
    //if(op!=' ')
    // stack.Push(op);
    stack.Push(strString[i]);
    }
    else
    {
    op = (char)stack.Pop();
    while (Pred(op,strString[i])==true)
    {
    Postfix.Add(op);
    if (stack.Count == 0)
    break;
    op = (char)stack.Pop();
    }
    stack.Push(strString[i]);
    }
    }

    }

    while (stack.Count!=0)
    {
    op =(char) stack.Pop();
    Postfix.Add(op);
    }

    }

    private bool Pred(char op1,char op2)
    {
    int p1=0, p2=0;
    for (int i = 0; i < _operator.Length; i++)
    {
    if (op1.ToString()==_operator[i])
    {
    p1 = i;
    }
    }
    for (int i = 0; i < _operator.Length; i++)
    {
    if (op2.ToString() == _operator[i])
    {
    p2 = i;
    }
    }

    if (_weightOPerator[p1] >= _weightOPerator[p2])
    return true;
    else
    return false;
    }

    private double Proccess(System.Collections.Generic.List<char> Postfix)
    {
    System.Collections.Generic.Stack<double> stack = new System.Collections.Generic.Stack<double>();
    char symbol;
    double operand1, operand2,result;

    for (int i = 0; i < Postfix.Count; i++)
    {
    symbol = Postfix[i];
    if (symbol >= '0' && symbol <= '9')
    {
    stack.Push((double)Postfix[i]-48);
    }
    else
    {
    operand2 = stack.Pop();
    operand1 = stack.Pop();

    result = Operate(symbol, operand1, operand2);

    stack.Push(result);
    }
    }
    return( stack.Pop());
    }

    private double Operate(char symbol, double opr1, double opr2)
    {
    double result=0.0;

    switch (symbol.ToString())
    {
    case "+":
    result = opr1 + opr2;
    break;
    case "-":
    result = opr1 - opr2;
    break;
    case "*":
    result = opr1 * opr2;
    break;
    case "/":
    result = opr1 / opr2;
    break;
    }

    return (result);
    }

    }



    فقط کافیه مقدار ورودی و به strString بدی و متد Calculate() رو فراخوانی کن

  4. #4

    نقل قول: نجوه محاسبه چند عمل در برنامه ماشین حساب ؟

    راستی برنامه کامل شده همین کلاس رو داخل تاپیک نمونه برنامه های کوچک و مفيد در سي شارپ قرار داده ام

    لینک

    https://barnamenevis.org/showthread.p...=1#post1788913

  5. #5

    نقل قول: نجوه محاسبه چند عمل در برنامه ماشین حساب ؟

    چرخ رو دوباره اختراع نکن:
    var result = new DataTable().Compute("2-3/4*12", null);

  6. #6

    نقل قول: نجوه محاسبه چند عمل در برنامه ماشین حساب ؟

    ممنون از راهنماییتون
    ولی این ماشین حساب که طراحی کردم تحت ویندوزه اگه میشه یک کمک بنمایید که راحت باشه به طوری که بشه تو کلاس ارائه کرد

  7. #7

    نقل قول: نجوه محاسبه چند عمل در برنامه ماشین حساب ؟

    ممنون از راهنماییتون
    ولی این ماشین حساب که طراحی کردم تحت ویندوزه اگه میشه یک کمک بنمایید که راحت باشه به طوری که بشه تو کلاس ارائه کرد

  8. #8

    نقل قول: نجوه محاسبه چند عمل در برنامه ماشین حساب ؟

    ممنون از راهنماییتون
    ولی این ماشین حساب که طراحی کردم تحت ویندوزه اگه میشه یک کمک بنمایید که راحت باشه به طوری که بشه تو کلاس ارائه کرد

تاپیک های مشابه

  1. سورس برنامه ماشین حساب
    نوشته شده توسط ProgrammingLove در بخش برنامه نویسی در 6 VB
    پاسخ: 12
    آخرین پست: چهارشنبه 29 فروردین 1386, 01:19 صبح
  2. یه برنامه ماشین حساب بدین
    نوشته شده توسط هانی هاشمی در بخش PHP
    پاسخ: 2
    آخرین پست: یک شنبه 22 مرداد 1385, 15:32 عصر
  3. پاسخ: 4
    آخرین پست: سه شنبه 25 مرداد 1384, 02:43 صبح
  4. برنامه ماشین حساب
    نوشته شده توسط وحید1365 در بخش برنامه نویسی در 6 VB
    پاسخ: 5
    آخرین پست: یک شنبه 21 فروردین 1384, 15:03 عصر
  5. درخواست یک برنامه ماشین حساب با پاسکال تحت داس
    نوشته شده توسط ar_monti@ در بخش برنامه نویسی در Delphi
    پاسخ: 0
    آخرین پست: دوشنبه 14 دی 1383, 23:48 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •