PDA

View Full Version : چطور میشه این سه تا متغیر رو کنار هم گذاشت تا محاسبه ریاضی انجام بشه؟



mostafag
جمعه 12 دی 1393, 21:34 عصر
سلام

دوستان فرض کنید سه تا متغیر داریم به نام های a,b,c,x
این سه متغیر داخل برنامه مقدار دهی میشن به این صورت:
a=2
b=3
c=^
x= حاصل معادله ی بالا

حالا چطور میتونم اینارو بزارم کناره هم تا محاسبه ی ریاضی انجام بشه؟!؟
نمیدونم متوجه شدید یا نه. ولی مقادیره من فقط توی برنامه بعد از یه سری محاسبات مشخص میشه!! یعنی یه بار ممکنه مقدار c ، مثلا ضرب باشه یه بار توان یه بار تقسیم. بعد هیچ جوره نمیتونم اینارو مشخص کنم!!

راه حلی به نظرتون میرسه که بتونم این محاسبه رو انجام بدم؟!؟
خودم این کد رو نوشتم ولی جواب نداد:



x= Convert.ToInt16(Convert.ToString(a) + c + Convert.ToString(b));



ولی بازم خطا میده!!

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

ممنون
منتظرم ...

mostafag
جمعه 12 دی 1393, 22:49 عصر
آقا یعنی کسی نظری نداره؟!!؟؟

لطفا حتی اگه روشی میشناسید که کارو پیش ببره بگید! واقعا برا همین موندم چیکار کنم.

هر کار میکنم نمیشه ...

mostafag
شنبه 13 دی 1393, 00:02 صبح
خودم به این نتیجه رسیدم که برا هر عملگر یه شرط بنویسم به این صورت:



if (c == "*")
{
x = Convert.ToInt16(a * b);
}


ولی یه جورایی کلی کد میخواد برا این اضافه کنم!! یعنی برا هر عملگر یه شرط اینطوری باید بزارم!
روش دیگه ای وجود نداره؟؟

Share & Learn
شنبه 13 دی 1393, 00:04 صبح
بهتره از switch case استفاده کنید

RIG000
شنبه 13 دی 1393, 00:11 صبح
تو الان میخای ماشین حساب بنویسی؟ شما وقتی مشخص میکنی که چه عملی انجام شه چه جوری مشخصش میکنی؟ تو اگه radiobutton هم بزاری که مثلا rdojam و rdomenha و rdozarb. و یه باتونم که محاسبه انجام بده.
حالا مقدار ها تو تو تکستباکس های a و b و ارد میکنی . rdo انتخابیت اگه rdomenha باشه c شما برابر میشه با a-b که باید کدش رو بنویسی و حاصل رو تو x که مثلا یه label هست نشون بدی.

mostafag
شنبه 13 دی 1393, 01:48 صبح
برنامه ای که دارم مینویسم یه ماشین حساب معمولی نیست!!
این برنامه اینطوریه که یه معادله اینطوری بهش میدی:


10*(16^2-13)*8+9^3


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

کلا اگه برنامه ای، نمونه ای چیزی دارید که یه همچین معادله ای رو محاسبه کنه ممنون میشم معرفی کنید.

FastCode
شنبه 13 دی 1393, 03:11 صبح
من یه نمونه ماشین حساب RPN براتون میزارم(ساده ترین نوع ماشین حساب)
ولی این یکی رو باید خودتون زحمتش رو بکشید چون احتمالا یک tree parser هم میخواد که من این موقع شب واقعا مغزش رو ندارم.


using System;
namespace RPN
{
class MainClass
{
public static void Main (string[] args)
{
System.Collections.Generic.Stack<long> stack = new System.Collections.Generic.Stack<long> ();
string line;
while ((line = Console.ReadLine ()) != null) {
try {
if (line == "+") {
long a = stack.Pop (), b = stack.Pop ();
stack.Push (a + b);
} else if (line == "-") {
long a = stack.Pop (), b = stack.Pop ();
stack.Push (b - a);
} else if (line == "*") {
long a = stack.Pop (), b = stack.Pop ();
stack.Push (a * b);
} else if (line == "/") {
long a = stack.Pop (), b = stack.Pop ();
stack.Push (b / a);
} else if (line == "print") {
long[] stackarr = stack.ToArray ();
Array.Reverse (stackarr);
foreach (long str in stackarr) {
Console.WriteLine (str);
}
} else {
stack.Push (long.Parse (line));
}
} catch (Exception ex) {
Console.WriteLine (ex.Message);
}
}
}
}
}

FastCode
شنبه 13 دی 1393, 03:14 صبح
این هم نمونه های انجام شده با روش درست.
http://en.wikipedia.org/wiki/GNU_bison
http://en.wikipedia.org/wiki/Yacc
http://courses.cs.washington.edu/courses/cse322/07au/slides/lec27-4up.pdf
http://dinosaur.compilertools.net/bison/bison_5.html
http://epaperpress.com/lexandyacc/calc.html

mostafag
شنبه 13 دی 1393, 09:29 صبح
تشکر از شما
ولی من توی c# کاملا مبتدی هستم و منابعی که دادید خیلی حرفه ای توضیح دادن ، کلا گیج شدم :لبخند:

فقط کدی که خودتون دادید رو یکمی متوجه شدم ولی خب اینم که یه ماشین حساب خیلی ساده است! مطمئنا نمیشه به همین سادگی اینکارو کرد.

منظورتون از tree parser چیه دقیقا؟؟ چون اصلا نمیدونم این چیکار میکنه.

اگه یکمی مبتدی تر توضیح بدید خیلی ممنون میشم ...

تشکر

RIG000
شنبه 13 دی 1393, 10:40 صبح
http://ehsanavr.com/605/microsoft-dot-net/%D9%85%D8%A7%D8%B4%DB%8C%D9%86-%D8%AD%D8%B3%D8%A7%D8%A8-%D8%B3%D8%A7%D8%AF%D9%87-%D8%A8%D8%A7-%D8%B3%DB%8C-%D8%B4%D8%A7%D8%B1%D9%BE/

mostafag
شنبه 13 دی 1393, 12:08 عصر
http://ehsanavr.com/605/microsoft-dot-net/%D9%85%D8%A7%D8%B4%DB%8C%D9%86-%D8%AD%D8%B3%D8%A7%D8%A8-%D8%B3%D8%A7%D8%AF%D9%87-%D8%A8%D8%A7-%D8%B3%DB%8C-%D8%B4%D8%A7%D8%B1%D9%BE/

ممنون از شما

ولی قضیه یه ماشین حساب ساده نیست!! اینجا کاربر کل معادله (یا هر چی که من اسمشو بلد نیستم :دی) رو وارد میکنه بعد باید برنامه به صورت هوشمند اولویت بده به عملگرها و حسابش کنه!! دوتا عدد نیست که بعد مشخص باشه

RIG000
شنبه 13 دی 1393, 12:23 عصر
http://www.c-sharpcorner.com/uploadfile/Georgerxz/advanced-calculator-in-C-Sharp/

RIG000
شنبه 13 دی 1393, 12:25 عصر
و این
https://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=8833&lngWId=10