PDA

View Full Version : سوال: تبدیل رشته به عدد



nargestaha
شنبه 11 تیر 1390, 10:32 صبح
سلام دوستان
چطوری میشه یه عبارت رشته ای مثل s رو به integer تبدیل کرد ؟
یعنی ورودیمون string باشه اما جوابش رو برامون integer تحویل بده؟
البته ورودیمون هر عبارت دیگه ای میتونه باشه(کاربر بطور دلخواه وارد میکنه)

2+627-*10/36-98 =string s

sinashahab
شنبه 11 تیر 1390, 11:20 صبح
int i = int.Parse(s);

nargestaha
شنبه 11 تیر 1390, 11:29 صبح
درسته! اما...
چطوری میشه تو یه رشته, عملوند و عملگر رو از هم تشخیص داد تا بشه روش محاسبه ریاضی انجام داد؟

Hossenbor
شنبه 11 تیر 1390, 12:15 عصر
باید مقادیر اون کلیدها رو بدست بیاری وببینی شرایطه خاصی مثل ضربدر یا پرانتز نیست و گر نه از همون اول شروع به خوندن و تجزیه متن می کنی پروژه سرگردانیه نظر منو میخوایی واسش الگوریتم درست کن پوسته منو کشید تا چهار عملگر جمع و تفریق و ضرب و تقسیم رفتم بعدش چونکه یادم رفته بود سیستمم ضد گلوله است از پروژه بکاپ بگیرم پروژه دود شد رفت هوا

Felony
شنبه 11 تیر 1390, 12:22 عصر
باید یک Parser بنویسید یا دنبال یک Parser آماده بگردید ، همین کلمه رو گوگل کنید .

nargestaha
یک شنبه 12 تیر 1390, 08:23 صبح
راستش تازه شروع به یادگیری c# کردم اگه ممکنه یه کم تو کدنویسیش کمکم کنید

amirhfe
یک شنبه 12 تیر 1390, 12:26 عصر
یعنی واقعا کسی بلد نیست !!!

ahmadi_development
یک شنبه 12 تیر 1390, 13:26 عصر
سلام دوستان
چطوری میشه یه عبارت رشته ای مثل s رو به integer تبدیل کرد ؟
یعنی ورودیمون string باشه اما جوابش رو برامون integer تحویل بده؟
البته ورودیمون هر عبارت دیگه ای میتونه باشه(کاربر بطور دلخواه وارد میکنه)

2+627-*10/36-98 =string s



فکر کنم شما می خواهید برنامه ماشین حساب بنویسید به نظرم بایداز پشته استفاده کنید الگوریتمش تو کتاب های ساختمان داده وجود داره

nargestaha
یک شنبه 12 تیر 1390, 14:36 عصر
بله در واقع یه نوع ماشین حسابه که ورودیمون رو از text box بصورت رشته دریافت کرده(مثل s) و حاصلش رو بصورت integer در خروجی نشون بده.ما هنوز به مبحث پشته نرسیدیم برای منی که تازه شروع به کدنویسی کردم یه راه حل آسونتر و مبتدی تر پیشنهاد بدید

اگه ممکنه یکی کمکم کنه ....

20-*10/36-98 = string s

nargestaha
دوشنبه 13 تیر 1390, 14:13 عصر
خواهشا یکی کمکم کنه.......

syntiberium
دوشنبه 13 تیر 1390, 16:58 عصر
مشکلت با این حل می شه :71870

behzadkhaledian
دوشنبه 13 تیر 1390, 20:12 عصر
ببین یا باید برنامت خیلی حرفه ای باشه و از پشته استفاده کنی که در اینصورت باید بخش مربوطه رو توکتاب ساختمان داده بخونی که در اینصورت میتونی تقدم عملگرها و پرانتز رو هم تو برنامت پیاده کنی(که خیلی عالیه)
یا اینکه ...
باید از توابع رشته ای (مانند substring , split, و غیره) استفاده کنی به این صورت که عددهارا جدا میکنی تا به اولین عملگر برسی. عملگرو تو یه متغیر نگه میداری و باز با همون توابع رشته ای عدد بعدی رو تا عملگر بعدی جدا میکنی به این عملگر که رسیدی اینم میذاری تو یه متغیر حالا اون عملگر قبلی رو که بدست آوردی رو اون دو عدد اعمال میکنی و عدد به دست آمده رو نگه میداری و به همین صورت رشته رو تا آخر ادامه میدی.
(یه توضیح اینکه عملگری رو که بدست میاری باید با یه دستور سویچ تستش کنی که چیه بعد رو عملوند ها که همون دو عددی هستن که به دست آوردی اعمالش کنی)
امیدوارم به دردت بخوره:لبخندساده:

nargestaha
چهارشنبه 15 تیر 1390, 08:55 صبح
سلام دوستان. این راه دومی که behzadkhaledian پیشنهاد دادند فکر کنم از همه بهتر و آسونتره چون من تازه دارم برنامه نویسی یاد میگیرم و با پشته آشنایی ندارم.خیلی تلاش کردم اما نتونستم کدی بنویسم اگه ممکنه تو کدنویسیش کمکم کنید :ناراحت:

syntiberium
چهارشنبه 15 تیر 1390, 13:20 عصر
من توی همین تاپیک توی پست شماره ی 11 جواب شما رو با یک پروژه ی آماده دادم که می تونه حتی عبارت های داخل پرانتز رو هم حل کنه و اگر شما نیاز داشتید خودتون می تونید توابع مورد نیازتون رو بهش اضافه کنید. اونوقت شما اصلا نگاه بهش نکردید و دارید دنبال جواب می گردید ؟ من دوباره لینک فایل رو اینجا می زارم : 71994

linux
پنج شنبه 16 تیر 1390, 14:00 عصر
اگر رشته ای که تحصیل کردهاید نرم افزار باشد در درس طراحی کامپایلر ها باید یک چیزهایی خوانده باشید.
در این آدرس http://www.codeproject.com/KB/recipes/llparser.aspx با شرح کامل یک کد هست و اگر خیلی بخواهید شی گرا برنامه نوسی کنید باید از الگوی Interpreter استفاده کنید که در این آدرس می توانید نمونه برنامه نوشته شده با سورس را ببنید. http://www.codeproject.com/KB/architecture/InterpreterPatternParsing.aspx
بعضی وقتها مشکل ما این هست که نمی دانیم چیزی که می خواهیم چه نام دارد(بابک بخشایش)

nargestaha
پنج شنبه 16 تیر 1390, 16:35 عصر
دوست گرامی linux درست حدس زدید رشته تحصیلی بنده چیزی به غیر از کامپیوتر بوده و از طرفی تازه برنامه نویسی رو شروع کردم ؛واسه همینه که فعلا به جواب نرسیدم!!!

دوست گرامی syntiberium همون بار اول که لینک رو قرار داده بودید برنامتون رو دیدم حتی بعضی قسمت های اضافی که به دردم نمی خورد رو حذف کردم تا ساده ترش کنم اما باز جواب نگرفتم.حال برای شما دوستان هم قرار میدم شما بگید مشکلش چیه؟!