View Full Version : یک سوال بسیار ساده
123456789
سه شنبه 20 بهمن 1383, 11:17 صبح
سلام دوستان
من میخواستم یک ماشین حساب ساده درست کنم اما دو مشکل داشتم .
اول اینکه من نمیدونم چطوری کد اسکی بذارم که وقتی روی کیبرد 1 رو زد در تکست باکس هم اونو نشون بده.
مشکل دوم اینه که ماشن حسابی که درست کردم 1+2+3 رو جوابش رو 5 میده یعنی فقط محاسبات رو رو دو تا عدد آخر انجام میده.
Hamedm
سه شنبه 20 بهمن 1383, 12:02 عصر
سورس برنامتو بزار اینجا تا ببینم مشکلش چیه؟
123456789
جمعه 23 بهمن 1383, 21:39 عصر
اینم سورس برنامه اگه زودتر کمکم کنید ممنون میشم. :)
Dim num1, num2, num3 As Single
Dim f, b As Boolean
Dim op, memo As String
Private Sub cmd0_Click()
If b = True Then
T.Text = ""
b = False
End If
If Val(T.Text) <> 0 Then
T.Text = T.Text + "0"
End If
End Sub
Private Sub cmd1_Click()
If b = True Then
T.Text = ""
b = False
End If
T.Text = T.Text + "1"
if key=#49 t.Text ="1"
End Sub
Private Sub cmd1x_Click(Index As Integer)
T.Text = 1 / Val(T.Text)
End Sub
Private Sub cmd2_Click()
If b = True Then
T.Text = ""
b = False
End If
T.Text = T.Text + "2"
End Sub
Private Sub cmd3_Click()
If b = True Then
T.Text = ""
b = False
End If
T.Text = T.Text + "3"
End Sub
Private Sub cmd4_Click()
If b = True Then
T.Text = ""
b = False
End If
T.Text = T.Text + "4"
End Sub
Private Sub cmd5_Click()
If b = True Then
T.Text = ""
b = False
End If
T.Text = T.Text + "5"
End Sub
Private Sub cmd6_Click()
If b = True Then
T.Text = ""
b = False
End If
T.Text = T.Text + "6"
End Sub
Private Sub cmd7_Click()
If b = True Then
T.Text = ""
b = False
End If
T.Text = T.Text + "7"
End Sub
Private Sub cmd8_Click()
If b = True Then
T.Text = ""
b = False
End If
T.Text = T.Text + "8"
End Sub
Private Sub cmd9_Click()
If b = True Then
T.Text = ""
b = False
End If
T.Text = T.Text + "9"
End Sub
Private Sub cmdalamat_Click()
T.Text = T.Text * (-1)
End Sub
Private Sub cmdbackSpace_Click()
If Val(T.Text) <> 0 Then
T.Text = Left(T.Text, Len(T.Text) - 1)
End If
End Sub
Private Sub cmdce_Click()
num2 = ""
T.Text = ""
End Sub
Private Sub cmddot_Click()
If f = False Then
f = True
T.Text = T.Text + "."
End If
End Sub
Private Sub cmdjam_Click()
op = "+"
b = True
num1 = Val(T.Text)
End Sub
Private Sub cmdmc_Click()
memo = ""
Text1.Text = ""
End Sub
Private Sub cmdmmosbat_Click()
End
End Sub
Private Sub cmdmosavi_Click(Index As Integer)
num2 = Val(T.Text)
Select Case op
Case "+"
T.Text = num1 + num2
Case "-"
T.Text = num1 - num2
Case "*"
T.Text = num1 * num2
Case "/"
If Val(num2) <> 0 Then
T.Text = num1 / num2
End If
End Select
num3 = Val(T.Text)
End Sub
Private Sub cmdmr_Click()
T.Text = memo
End Sub
Private Sub cmdms_Click()
If T.Text <> "" Then
memo = T.Text
Text1.Text = "M"
End If
End Sub
Private Sub cmdsqrt_Click()
T.Text = Sqr(Val(T.Text))
End Sub
Private Sub cmdtafrigh_Click()
op = "-"
b = True
num1 = Val(T.Text)
End Sub
Private Sub cmdtaghsim_Click()
op = "/"
b = True
num1 = Val(T.Text)
End Sub
Private Sub cmdzarb_Click()
op = "*"
b = True
num1 = Val(T.Text)
End Sub
Private Sub Command1_Click()
T.Text = ""
End Sub
Private Sub Command2_Click()
End
End Sub
Private Sub Form_Load()
f = False
b = False
End Sub
123456789
جمعه 23 بهمن 1383, 21:39 عصر
اینم سورس برنامه اگه زودتر کمکم کنید ممنون میشم. :)
Dim num1, num2, num3 As Single
Dim f, b As Boolean
Dim op, memo As String
Private Sub cmd0_Click()
If b = True Then
T.Text = ""
b = False
End If
If Val(T.Text) <> 0 Then
T.Text = T.Text + "0"
End If
End Sub
Private Sub cmd1_Click()
If b = True Then
T.Text = ""
b = False
End If
T.Text = T.Text + "1"
if key=#49 t.Text ="1"
End Sub
Private Sub cmd1x_Click(Index As Integer)
T.Text = 1 / Val(T.Text)
End Sub
Private Sub cmd2_Click()
If b = True Then
T.Text = ""
b = False
End If
T.Text = T.Text + "2"
End Sub
Private Sub cmd3_Click()
If b = True Then
T.Text = ""
b = False
End If
T.Text = T.Text + "3"
End Sub
Private Sub cmd4_Click()
If b = True Then
T.Text = ""
b = False
End If
T.Text = T.Text + "4"
End Sub
Private Sub cmd5_Click()
If b = True Then
T.Text = ""
b = False
End If
T.Text = T.Text + "5"
End Sub
Private Sub cmd6_Click()
If b = True Then
T.Text = ""
b = False
End If
T.Text = T.Text + "6"
End Sub
Private Sub cmd7_Click()
If b = True Then
T.Text = ""
b = False
End If
T.Text = T.Text + "7"
End Sub
Private Sub cmd8_Click()
If b = True Then
T.Text = ""
b = False
End If
T.Text = T.Text + "8"
End Sub
Private Sub cmd9_Click()
If b = True Then
T.Text = ""
b = False
End If
T.Text = T.Text + "9"
End Sub
Private Sub cmdalamat_Click()
T.Text = T.Text * (-1)
End Sub
Private Sub cmdbackSpace_Click()
If Val(T.Text) <> 0 Then
T.Text = Left(T.Text, Len(T.Text) - 1)
End If
End Sub
Private Sub cmdce_Click()
num2 = ""
T.Text = ""
End Sub
Private Sub cmddot_Click()
If f = False Then
f = True
T.Text = T.Text + "."
End If
End Sub
Private Sub cmdjam_Click()
op = "+"
b = True
num1 = Val(T.Text)
End Sub
Private Sub cmdmc_Click()
memo = ""
Text1.Text = ""
End Sub
Private Sub cmdmmosbat_Click()
End
End Sub
Private Sub cmdmosavi_Click(Index As Integer)
num2 = Val(T.Text)
Select Case op
Case "+"
T.Text = num1 + num2
Case "-"
T.Text = num1 - num2
Case "*"
T.Text = num1 * num2
Case "/"
If Val(num2) <> 0 Then
T.Text = num1 / num2
End If
End Select
num3 = Val(T.Text)
End Sub
Private Sub cmdmr_Click()
T.Text = memo
End Sub
Private Sub cmdms_Click()
If T.Text <> "" Then
memo = T.Text
Text1.Text = "M"
End If
End Sub
Private Sub cmdsqrt_Click()
T.Text = Sqr(Val(T.Text))
End Sub
Private Sub cmdtafrigh_Click()
op = "-"
b = True
num1 = Val(T.Text)
End Sub
Private Sub cmdtaghsim_Click()
op = "/"
b = True
num1 = Val(T.Text)
End Sub
Private Sub cmdzarb_Click()
op = "*"
b = True
num1 = Val(T.Text)
End Sub
Private Sub Command1_Click()
T.Text = ""
End Sub
Private Sub Command2_Click()
End
End Sub
Private Sub Form_Load()
f = False
b = False
End Sub
Behrouz_Rad
جمعه 23 بهمن 1383, 22:38 عصر
اصول ساخت ماشین حساب ها به این شکل است که کاربر با استفاده از کیبورد و یا دکمه هایی که در خود برنامه ماشین حساب تعبیه شده، اقدام به انجام اعمال محاسباتی می کند.
شیوه شما برای ایجاد یک ماشین حساب، به بحث ساختمان داده ها در رشته کامپیوتر مرتبط می شود.
به عنوان مثال شما قصد درید تا عبارت روبرو رو حساب کنید:
1 + 5 * 7 ^ 8 / 2 - 4
مهترین چیزی که باید به خاطر داشته باشید، تقدم اولویت عملگرها در زبان های برنامه نویسی است.
در عبارت فوق، به ترتیب، عملگرهای توان، (تقسیم، ضرب)، (جمع، تفریق) دارای اولویت هستند.
در عبارت فوق، ابتدا هفت به توان هشت می رسد. نتیجه در پنج ضرب می شود. نتیجه بر دو تقسیم می شود.
نتیجه با یک جمع می شود و در آخر از چهار کم می شود.
عباراتی ریاضی که ما به شکل ساده آنها را بر روی کاغذ می نویسیم، به عبارات INFIX معروف هستند.
عبارت ریاضی فوق، یک عبارت INFIX است.
اما کامپایلرها عموما برای محاسبه ی عبارات INFIX، آنها را به POSTFIX تبدیل می کنند.
اگر عبارت فوق را در داخل کد برنامه و در اصطلاح در محیط کدنویسی برنامه وارد کنید، بدون هیچ مشکلی با توجه به اولویت عملگرها که توضیح داده شد، اجرا خواهد شد.
اما برای محاسبه عبارت فوق در Run Time، زحمت تبدیل عبارت به POSTFIX بر عهده شماست.
روش تبدیل عبارت INFIX به POSTFIX:
1) ابتدا عبارت را با توجه به اولوبت عملگرها به طور کامل پرانتز گذاری می کنیم.
نکته مهم: در تمام زبان های برنامه نویسی، عملگر پرانتز، بالاترین اولویت را در بین عملگرهای محاسباتی دارد.
2) هر عملگر را به سمت راست پرانتز بسته خودش منتقل می کنیم.
3) تمام پرانتزها را حذف می کنیم.
مثال: عبارت INFIX روبرو را به POSTFIX تبدیل می کنیم:
a / b - c + d * e - a * e
پرانتز گذاری عبارت:
( ( ( ( a / b ) - c ) + ( d * e ) ) - ( a * e ) )
عبارت POSTFIX حاصل:
ab / c - de * + ae * -
حال با توجه به توضیحات گفته شده، با استفاده از نوع ساختمان داده ی STACK، به راحتی می توانید برنامه مورد نظر خود را بسازید.
البته اگر با اصول ساختمان داده ها آشنا نباشید، ساخت چنین برنامه ای تا حدودی برایتان مشکل است.
در ضمن سوال شما بر خلاف عنوان پستتون ساده نیست.
سوال شما یکی از پروژه های پایان ترم دانشجویان کارشناسی رشته کامپیوتر است.
موفق باشید.
:wise1:
Hamedm
شنبه 24 بهمن 1383, 07:18 صبح
سوال شما یکی از پروژه های پایان ترم دانشجویان کارشناسی رشته کامپیوتر است.
بهروز جان شوخی میکنی. ساخت یک ماشین حساب مگه شد پروژه. اون هم پایان ترم کارشناسی. :strange:
موفق باشید و پرتوان
Behrouz_Rad
شنبه 24 بهمن 1383, 08:03 صبح
بهروز جان شوخی میکنی. ساخت یک ماشین حساب مگه شد پروژه. اون هم پایان ترم کارشناسی.
عزیزم حامد جان نه هر ماشین حسابی.
این یک ماشین حساب هوشمنده.
ماشین حسابی که عبارت ریاضی بر روی کاغذ رو در Run Time اجرا کنه.
شما امتحان کن. ببین می تونی برنامه ای بنویسی که یک عبارت ریاضی وارد شده در یک Text Boxرو حساب کنه. (تقدم عملگرها یادت نره)
البته تا حدودی حق دارید. احتمالا رشته شما کامپیوتر نیست.
ولی یکی از افرادی که چند وقت پیش توی این سایت آگهی استخدام برنامه نویس #C داده بود و مدتی هم در قسمت اعلانات سایت قرار داشت، موفق به نوشتن این برنامه شد و روی یکی از استادان رشته کامپیوتر رو که در یکی از دانشگاه های این مملکت تدریس می کنه کم کرد.
به هر حال تنها راه استفاده از STACK برای انجام چنین محاسباتی است.
موفق باشید.
:wise1:
Hamedm
شنبه 24 بهمن 1383, 09:41 صبح
شما امتحان کن. ببین می تونی برنامه ای بنویسی که یک عبارت ریاضی وارد شده در یک Text Boxرو حساب کنه. (تقدم عملگرها یادت نره)
من دوم دبیرستان بودم که برای یکی از معلم هایم این برنامرو نوشتم. برنامه توابع براکتی رو میگرفت و توابع را رسم میکرد. کاربر باید یک عبارت وارد میکرد. اون برنامه تمام پرانتزها و تقدم عملگرهارو در نظر میگرفت.
البته تا حدودی حق دارید. احتمالا رشته شما کامپیوتر نیست.
نه بهروز جان من دانشجوی نرم افزارم.
ولی یکی از افرادی که چند وقت پیش توی این سایت آگهی استخدام برنامه نویس #C داده بود و مدتی هم در قسمت اعلانات سایت قرار داشت، موفق به نوشتن این برنامه شد و روی یکی از استادان رشته کامپیوتر رو که در یکی از دانشگاه های این مملکت تدریس می کنه کم کرد.
از این جور استادا توی دانشگاههای ما کم نیست. :strange:
موفق باشید و پرتوان :)
Behrouz_Rad
شنبه 24 بهمن 1383, 09:53 صبح
من دوم دبیرستان بودم که برای یکی از معلم هایم این برنامرو نوشتم. برنامه توابع براکتی رو میگرفت و توابع را رسم میکرد. کاربر باید یک عبارت وارد میکرد. اون برنامه تمام پرانتزها و تقدم عملگرهارو در نظر میگرفت.
ممنون میشم برنامتون رو ببینم و با طرز کارش آشنا بشم.
اگر از STACK استفاده نکرده باشید، مطمئن باشید انقلاب بزرگی در بحث ساختمان داده ها و تبدیل عبارات INFIX به POSTFIX به وجود آوردید.
منتظرم...
:wise1:
Hamedm
شنبه 24 بهمن 1383, 10:17 صبح
متاسفانه همون سال وقتی که داشتم با Partition Magic هاردمو مرتب میکردم برق رفت و هاردم سوخت.( بد شانسی رو میبینید. مثل اینکه اداره برق منتظره من هاردمو پارتیشن بندی کنم و او هم همون موقع برق را قطع کنه :mad: . بهر حال ایرانه دیگه با کلی مشکلات)
البته راه حلشو کمی یادمه چون از اون موضوع حدود 4 سال گذشته. نه من از STACK استفاده نکرده بودم. اصلا اون موقع همچین چیزایی بلد نبودم. برنامم حجمش خیلی زیاد شد. تا اونجایی که یادمه حدود 1000 تا 1200 خط شد. چون 4 سال پیش زیاد اطلاعات برنامه نویسی نداشتم ولی خیلی خوب الگوریتم طراحی میکردم.
روش کار برنامه ام به این شکل بود:
برنامه اول دنبال پرانتز میگشت. داخلی ترین پرانتزو با تقدم عملیاتی(که برای این تقدم عملیاتی هم یک Function نوشته بودم که یادمه این Function کلی ازم انرژی گرفت) حساب میکرد. سپس بجای اون پرانتز مقدار عبارت بدست اومده رو جایگزین میکرد. و هیمن عملیاتو مجداا انجام میداد.
روش کارم کمی شبیه توضیحاتی است که آقا بهروز داد.
موفق باشید و پرتوان :)
Behrouz_Rad
شنبه 24 بهمن 1383, 10:32 صبح
به هر حال تنها راه همونه که عرض کردم...
انشاالله همیشه موفق باشید.
:flower: :flower: :flower: :wink:
123456789
شنبه 24 بهمن 1383, 17:13 عصر
دوستان خیلی ممنون از همتون .
من یک مشکل دیگه هم دارم , این برنامه من تا وقتی که با موس عددی رو نزده باشی عدد وارد شده با کیبرد رو تکست باکس نشون میده حالا من چیکار کنم وقتی کاربر مثلا اگه روی فرم هم کلیک کرد و بعد یک عدد رو با کیبرد وارد کرد باز هم نشون بده .من کد وارد کردن اعداد توسط کیبرد رو تو تکست باکس نوشتم .
دوستان اگه توضیحاتم خیلی واضح نیست باید منو ببخشید چون من خیلی مبتدی هستم :sorry:
حامد مصافی
یک شنبه 25 بهمن 1383, 01:07 صبح
Private Sub Form_KeyPress(KeyAscii As Integer)
Text1 = Chr(keycode)
End Sub
123456789
یک شنبه 25 بهمن 1383, 15:30 عصر
BlackDal جون ممنون از کمکتون :موفق: :flower:
Fagat_tanhaie
یک شنبه 25 بهمن 1383, 22:59 عصر
با سلام
برنامه ماشین حساب هوشمند اونجورهایی که اقا بهروز گفت سخت نیست و بدون استفاده از
stack هم به راحتی میشه نوشت.
من این برنامه رو ترم 2 کاردانی کامپیوتر نوشتم و اکثر شاگردا هم نوشته بودن (تو c )
روش کار هم اینه که یه تابع می نویسی که یک رشته محاسبات بدون پارانتز رو با توجه به اولویت محاسبه میکنه.
بعد از این تو رشته دنبال پارانتز بسته میگردی اگه پیدا نشد که حلله. ولی اگه پیدا شد از همون جا برمیگردی و دنبال پارانتز باز میگردی و بعد از پیدا کردن : متن بین دو پارانتز رو به تابع بالایی پاس میکنی و
جواب برگشتی رو بعد از پاک کردن قسمت بین دو پارانتز و البته خود پارانتز ها جواب رو در مکان پارانتز باز قرار داده و بعد از م و بقیه متن رو در صورت وجود به بقیه
می چسبونی.و این کار رو تا تموم شدن پرنتز ها ادامه میدهیم و بعد
از تموم شدن پارانتز متن باقی مونده رو به تابه بالایی میدی و جواب رو چاپ میکنی.
* البته قسمت تشخیص عدد های چند رقمی و علامت منفی رو توضیح ندادم
'''''''''''''''''''''''''''''''''''''''''''''''''' '''''''''''''''''''''''''''''''''''''''''''''''''' '''''''''''''''''''''''''''''''
Fagat_tanhaie
یک شنبه 25 بهمن 1383, 23:00 عصر
با سلام
برنامه ماشین حساب هوشمند اونجورهایی که اقا بهروز گفت سخت نیست و بدون استفاده از
stack هم به راحتی میشه نوشت.
من این برنامه رو ترم 2 کاردانی کامپیوتر نوشتم و اکثر شاگردا هم نوشته بودن (تو c )
روش کار هم اینه که یه تابع می نویسی که یک رشته محاسبات بدون پارانتز رو با توجه به اولویت محاسبه میکنه.
بعد از این تو رشته دنبال پارانتز بسته میگردی اگه پیدا نشد که حلله. ولی اگه پیدا شد از همون جا برمیگردی و دنبال پارانتز باز میگردی و بعد از پیدا کردن : متن بین دو پارانتز رو به تابع بالایی پاس میکنی و
جواب برگشتی رو بعد از پاک کردن قسمت بین دو پارانتز و البته خود پارانتز ها جواب رو در مکان پارانتز باز قرار داده و بعد از م و بقیه متن رو در صورت وجود به بقیه
می چسبونی.و این کار رو تا تموم شدن پرنتز ها ادامه میدهیم و بعد
از تموم شدن پارانتز متن باقی مونده رو به تابه بالایی میدی و جواب رو چاپ میکنی.
* البته قسمت تشخیص عدد های چند رقمی و علامت منفی رو توضیح ندادم
'''''''''''''''''''''''''''''''''''''''''''''''''' '''''''''''''''''''''''''''''''''''''''''''''''''' '''''''''''''''''''''''''''''''
Behrouz_Rad
یک شنبه 25 بهمن 1383, 23:33 عصر
برنامه ماشین حساب هوشمند اونجورهایی که اقا بهروز گفت سخت نیست و بدون استفاده از
stack هم به راحتی میشه نوشت.
ما اینجا داریم در مورد برنامه های ویژوال که در ردیف برنامه سازی ساخت یافته قرار می گیرند، صحبت می کنیم.
در روش برنامه سازی ساخت یافته، تمامی کارهای پیچیده برنامه به مجموعه ای از توابع کوچکتر تقسیم می شود که هر تابع وظیفه انجام دادن قسمتی از برنامه رو بر عهده داره. مثلا در زبان C که خود شما اشاره کردید، تابع main، بسیار کوچکه و توابع در اون نقش اصلی رو ایفا می کنند.
وقتی بنده میگم: تنها راه ایجاد این ماشین حساب، با استفاده از Stack هست، منظورم رعایت ساخت یافتگی برنامه ی ایجاد شونده است وگرنه مسلمه که برای نوشتن یک برنامه، ممکنه چندین راه وجود داشته باشه ولی تنها یک راه راه اصلی و بهینه ست.
از خود شما می پرسم... وقتی که تابع InStr در VB وجود داره، دیگه چه لزومی داره که بنده یک تابع چند خطی بنویسم که یک کاراکتر یا رشته رو در یک رشته ی دیگه جستجو کنه؟؟؟
و اما...
شما روش کار خودتون رو توضیح دادید که بسیار پیچیده، زما بر و غیر معقول است. حالا روش تبدیل بنده با استفاده از Stack رو ببینید.
مراحل کار:
عبارت Infixرا از چپ به راست پویش می کنیم:
1) پرانتزهای سمت چپ را به استک، Push می کنیم.
2) هنگامی که به یک عملوند می رسیم، آن را در خروجی می نویسیم.
3) هنگامی که به یک عملگر مثلا (*) می رسیم، آنگاه عملگرهای بالای استک که دارای اولویتی یکسان یا بالاتر از عملگر (*) هستند را Pop می کنیم و سپس عملگر (*) را در استک، Push می کنیم.
4) هنگامی که به پرانتز سمت راست می رسیم، آنگاه عملگرهای بالای استک را Pop کرده و در خروجی می ریزیم. تا هنگامی که به پرانتز سمت چپ در استک برسیم آن را Pop می کنیم ولی در خروجی نمی نویسیم.
عملیات فوق را تا آخر عبارت تکرار می کنیم. (پرانتز باز هیچگاه در استک ریخته نمی شود.)
عملیات فوق را به راحتی میشه به راحتی به شکل یک تابع بازگشتی (Recursion) و با خطوط بسیار کمتر از 230 خط شما و تنها در 15 تا 20 خط نوشت.
و این معنای واقعی برنامه سازی ساخت یافته است.
موفق، پیروز و سربلند باشید.
:wise1:
حامد مصافی
یک شنبه 25 بهمن 1383, 23:46 عصر
برنامه ماشین حساب هوشمند اونجورهایی که اقا بهروز گفت سخت نیست و بدون استفاده از
stack هم به راحتی میشه نوشت.
<span dir=ltr>
)2*3(+3*3 = 6 !!!!!!
</span>
می دونم باورش سخته ولی ماشین حساب شما اینو میگه
یه چیز دیگه : برنامه ماشین حساب هوشمند همون قدر که آقا بهروز میگه سخته
Fagat_tanhaie
سه شنبه 27 بهمن 1383, 01:21 صبح
یه چیز ساده گذاشتم تا اونایی که سطح شون پایینه استفاده کنند.
این برنامه ای که گذاشتم یه چیز ساده بود و برنامه اصلی رو پیدا نکردم
اگه تونستم پیداش کنم تا چند روز دیگه برنامه اصلی رو می زارم البته با کنترل خطا و محاسبه توابع مثلثاتی
(البته با روش بهینه)
در ضمن برنامه بالا در موادی که تو ورود اطلاعات خطایی نباشه درست کار میکنه و شمردن پارانتز های باز و
بسته و مشخص کردن + به عنوان علامت و یا عملگر کار سختی نیست . در برنامه نمونه روی علامت(-) کار شده و کنترل خطا هم کار چندان سختی نیست
حامد مصافی
سه شنبه 27 بهمن 1383, 02:21 صبح
1 - شما قبلا فرموده بودی 234 خط ؛ اینم 234 خط حالا می گی یه فایل دگه است؟؟
2 - شما فرض کن کسی اینجا اطلاعاتش پایین نیست
3 - داده ای که من به برنامه شما دادم درست بود
برنامه شما تو شمارش پرانتز مشکل داره
1+2+3 = 6
1+2+3+ (0) = 1
بمب منطقی
پنج شنبه 29 بهمن 1383, 00:08 صبح
به به می بینم که جناب فقط تنهایی(Fagat_Tanhaie) اینجا گرم صحبته.
این آقای فقط تنهایی یکی از بچه های باحال کلاسمونه (البته همه بچه های کلاس ما باحال و با کلاس و با سوادن :mrgreen: )
ایشون راست میگن. این برنامه رو ترم 2 کاردانی به ما دادن و ایییییییییییی اونقدر ها هم سخت نبود. و چون بچه های کلاس ما جزو نوابق تاریخ هستن :wink: بیشترشون تونستن این برنامه رو بنویسن. که البته از بین بچه ها یه 10-12 تایی هم پیدا شدن و کنترل خطا رو تو برنامه در دست گرفتن (که دو نفر از این افراد جناب Fagat_Tanhaie و یکی دیگشون بنده هستیم :sunglass: :D :oops: )
در ضمن آقا بهروز این طور که معلومه بچه های این سایت رو دست کم گرفته که میگن "این برنامه در سطح کارشناسی هست". :flower:
Fagat_tanhaie
پنج شنبه 29 بهمن 1383, 21:45 عصر
1 - شما قبلا فرموده بودی 234 خط ؛ اینم 234 خط حالا می گی یه فایل دگه است؟؟
2 - شما فرض کن کسی اینجا اطلاعاتش پایین نیست
3 - داده ای که من به برنامه شما دادم درست بود
برنامه شما تو شمارش پرانتز مشکل داره
1+2+3 = 6
1+2+3+ (0) = 1
_________________
اگه از جای خالی استفاده نکنین حلله (گفتم که این برنامه کنترل خطا نداره)
حامد مصافی
جمعه 30 بهمن 1383, 01:32 صبح
اگه از جای خالی استفاده نکنین حلله (گفتم که این برنامه کنترل خطا نداره)
جای خالی در داده من وجود نداشت ؛ بی خیال !
sasanhe
جمعه 30 بهمن 1383, 12:19 عصر
حامد جان ببخشید که وارد بحثتون میشم ولی من هم فکر میکنم که این کار بدون stackممکن نباشه ، شما چه طوری آدرس پرانتزها رو نگه می داشتید ؟
Hamedm
جمعه 30 بهمن 1383, 12:27 عصر
سلام ساسان جان
برنامه اول دنبال پرانتز میگشت. داخلی ترین پرانتزو با تقدم عملیاتی(که برای این تقدم عملیاتی هم یک Function نوشته بودم که یادمه این Function کلی ازم انرژی گرفت) حساب میکرد. سپس بجای اون پرانتز مقدار عبارت بدست اومده رو جایگزین میکرد. و هیمن عملیاتو مجداا انجام میداد.
بخدا برنامم رو ندارم در غیر این صورت میزاشتن اینجا تا همه ببینند.
متاسفانه همون سال وقتی که داشتم با Partition Magic هاردمو مرتب میکردم برق رفت و هاردم سوخت.(بد شانسی رو میبینید. مثل اینکه اداره برق منتظره من هاردمو پارتیشن بندی کنم و او هم همون موقع برق را قطع کنه . بهر حال ایرانه دیگه با کلی مشکلات)
موفق باشید و پرتوان
sasanhe
جمعه 30 بهمن 1383, 12:48 عصر
آقا حامد اگه حال و حوصله اش رو داشتی و و قت کردی بازم روی بارنامت کار کن چون خیلی جالبه اگه این کار رو کرده باشی .
ماشین حساب با زبان ++C که بتونه postfix حساب کنه یکی از پروژه های خودم بود که آخرش اون چیزی که می خواستم نشد .
برنامه اش رو پیدا میکنم برات می فرستم .
Hamedm
جمعه 30 بهمن 1383, 14:35 عصر
آقا حامد اگه حال و حوصله اش رو داشتی و و قت کردی بازم روی بارنامت کار کن چون خیلی جالبه اگه این کار رو کرده باشی .
الان آنقدر سرم شلوغه که اگه بدونی چقدر کار دارم میترکی. :)
موفق باشید و پرتوان
sasanhe
جمعه 30 بهمن 1383, 15:25 عصر
در هر صورت موفق و پیروز باشید .
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.