صفحه 1 از 3 123 آخرینآخرین
نمایش نتایج: از شماره 1 تا 10 , از مجموع 27

موضوع: کی پاسکال بلده ؟

  1. #1
    عضو دائم
    تاریخ عضویت
    Jan 2009
    محل سکونت
    یزد
    نوشته ها
    2,773
    تشکر تشکر کرده 
    914
    تشکر تشکر شده 
    2,780
    تشکر شده در
    1,757 پست

    پیش فرض کی پاسکال بلده ؟

    سلام
    از دوستانی که پاسکال بلدند برای کمک به جمعی از دانشجویان دعوت به عمل می آید
    والا امروز یکی از دوستانی که باهاش رودرواسی داشتم باهام تماس گرفت و گفت که تو درسش نمره کم داره و اگه این پروژه رو ببره نمره قبولی رو میاره. ما هم حس جوانمردیمون گل کرد و گفتیم یه کاریش میکنیم برات و از دوستامون میپرسیم ...
    ایشونم پر رو شد و گفت دمت گرم حالا که اینکار و میکنی چهار تا تغییر بده توش و چهار تا پروژه بده تا به بقیه دوستامم بدم

    اصل پروژه اینه که هر string به ورودی دادیم اون رو تفکیک کنه و بعد هم حساب کنه اون رو (عبارت ریاضی)
    مثلا:
    sin(90)+cos(0)-25*80
    رو بتونه حساب کنه ... رایکال و رگاریتم و توان و مابقی چیزها هم بتونه حساب کنه !!
    اما گفت از متعلقاتش فاکتور بگیر و یه چیزی بنویس که بتونه چهار عمل اصلی رو حساب کنه !
    یعنی
    25*66/456+36-55
    رو حساب کنه کافیه !!!! بعد گفت اگه اینم سخته یه چیزی رو بنویس که دو تا عدد رو بتونه روش عملهای اصلی رو انجام بده هم کافیه !!!
    یعنی مثلا
    445*5656
    انجام بده کافیه...

    حالا از دوستان اگه کسی میتونه نحوه کار رو بگه من خودم شاید بتونم یکاریش بکنم...
    اگر هم بتونه بنویسه که دیگه خیلی خیلی بهتر میشه...
    فکر کنم بهترین روش هم postfix باشه ؟

    حالا یه خیری پیدا بشه و مددی برسونه این چهار نفر نمره بگیرن



  2. # ADS




     

  3. #2
    عضو انجمن RezaFH آواتار ها
    تاریخ عضویت
    Jul 2009
    محل سکونت
    تبریز
    نوشته ها
    699
    تشکر تشکر کرده 
    1,032
    تشکر تشکر شده 
    2,817
    تشکر شده در
    1,444 پست

    پیش فرض پاسخ : کی پاسکال بلده ؟

    حالا بالاخره کدوم لازمه ؟
    من یخورده بلدم (یعنی درسمه مثلا باید کامل بلد باشم ... )
    چند تا هم برنامه ی آماده دارم که میتونم بنویسم

  4. تعداد تشکر ها از RezaFH به دلیل پست مفید


  5. #3
    عضو دائم
    تاریخ عضویت
    Jan 2009
    محل سکونت
    یزد
    نوشته ها
    2,773
    تشکر تشکر کرده 
    914
    تشکر تشکر شده 
    2,780
    تشکر شده در
    1,757 پست

    پیش فرض پاسخ : کی پاسکال بلده ؟

    اولویت بندی کردم دیگه !
    اگه کسی اولی رو بتونه بگه چجوریه که خیلی عالی میشه !
    دومی بگه بازم خوبه !
    سومی هم بگه کار راه انداز هست !


  6. #4
    عضو انجمن Mohsen آواتار ها
    تاریخ عضویت
    May 2009
    نوشته ها
    340
    تشکر تشکر کرده 
    281
    تشکر تشکر شده 
    741
    تشکر شده در
    324 پست

    پیش فرض پاسخ : کی پاسکال بلده ؟

    والا من پاسکال بلد نیستم!
    اما برای منطق برنامه می‌تونم راهنمایی‌تون کنم
    اول از همه ورودی رو می‌گیرید و می‌ریزید تو یه رشته!
    در مرحله دوم این رشته رو تفکیک می‌کیند یعنی عدد‌ها رو از بقیه چیز‌ها جدا می‌کنید و می‌ریزید تو یه آرایه!
    تفکیک عدد از بقیه چیزها هم که کاری نداره! تو رشته میرین جلو و هی تا جایی که رقم هست در 10 ضرب می‌کنید با رقم جدید جمع می‌کنید تا برسید به جایی که رقم نیست!
    یه مثال بزنم:
    مثلا ورودی بوده

    کد:
    (52+3)*4
    خوب اینجا اول پذرانتز باز رو می خونید که چون رقم نیست می‌ریزیدش تو یه خونه آرایه بعد 5 رو می‌خونید که عدد هست و می‌ریزیدش تو یه متغیر، بعد 2 رو می‌خونید که رقم هست، 5 رو در 10 ضرب می‌کنید و با 2 جمع می‌کنید و دوباره تو همون متغیر نگه می‌دارید. حالا علامت + رو می‌خونید که چون رقم نیست، 52 رو تو یه خونه آرایه می‌ریزید و + رو تو یه خونه و به همین ترتیب ادامه می‌دید، آخر سر تو یه آرایه عدد‌ها و عملگر‌ها رو جدا جدا دارید. اگه بخواید سینوس و اینا هم حساب کنه این مرحله یه خورده طولانی تر میشه ولی اونم خیلی سخت نیست.
    خوب حالا که عملوندها و عملگرها تفکیک شدند، باید حساب کنید و اینجا هست که باید اولویت عملگرها و پرانتز رو لحاظ کنید!
    خوب برای راحت تر شدن محاسبه باید فرم میانوندی یا همون اینفیکس رو به postfix تبدیل کنید که الگوریتمش به صورت زیر هست:
    1- عبارت infix رو از چپ به راست پیمایش می‌کنیم(از اول آرایه به آخرش)
    2- پرانتزهای سمت چپ (پرانتز باز) رو تو استک پوش می‌کنیم
    3- هنگامی که به یک عملوند می‌رسیم آن را در یک صف می‌نویسیم.
    4- هنگامی که به یک عملگر می‌رسیم آن‌گاه عملگرهای بالای استک را که دارای اولویتی یکسان یا بالاتر از آن هستند پاپ می‌کنیم و در صف می‌ریزیم و سپس عملگر را در استک پوش می‌کنیم
    5- هنگامی که به پرانتز سمت راست (پرانتز بسته) می‌رسیم آن‌گاه عملگرهای بالای استک را پاپ کرده و در صف می‌ریزیم تا زمانی که به پرانتز سمت چپ استک برسیم و آن را پاپ می‌کنیم.

    اینجا اگه بخوای کلاس بزاری می تونی صف رو چاپ کنی که معلوم بشه فرم postfix رو حساب کردی!

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

    نکته:
    1- اگه منفی تک عملوندی داری (منفی که عدد رو منفی میکنه!) باید علامت خاصی براش تعریف بشه و ...
    2- سینوس و اینا رو هم بخوای بزاری یه خورده سخت تر میشه!
    3- امیدوارم تونسته باشم توضیح بدم! کد سی این رو یه زمانی به عنوان تکلیف داشتیم، اما پیداش نکردم که براتون بزارمش!
    4- اینم یه نمونه ساده از کار کرد برنامه!
    کد:
    vorudi: ((52+34)*(23+34))
    tabdil be araye:
    ( ( 52 + 34 ) * ( 23 + 34 ) )
    tabdil be postfix:
    saf: 52 34 + 23 34 + *
    
    mohasebat:   saf:52 34 + 23 34 + *
    a)52+34=86   saf:86 23 34 + *
    b)23+34=57   saf:86 57 *
    c)57*86=4092 saf:4092
    
    khoruji=4092

  7. تعداد تشکر ها ازMohsen به دلیل پست مفید


  8. #5
    عضو دائم
    تاریخ عضویت
    Jan 2009
    محل سکونت
    یزد
    نوشته ها
    2,773
    تشکر تشکر کرده 
    914
    تشکر تشکر شده 
    2,780
    تشکر شده در
    1,757 پست

    پیش فرض پاسخ : کی پاسکال بلده ؟

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


  9. #6
    عضو انجمن Mohsen آواتار ها
    تاریخ عضویت
    May 2009
    نوشته ها
    340
    تشکر تشکر کرده 
    281
    تشکر تشکر شده 
    741
    تشکر شده در
    324 پست

    پیش فرض پاسخ : کی پاسکال بلده ؟

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

  10. تعداد تشکر ها از Mohsen به دلیل پست مفید


  11. #7
    عضو دائم
    تاریخ عضویت
    Jan 2009
    محل سکونت
    یزد
    نوشته ها
    2,773
    تشکر تشکر کرده 
    914
    تشکر تشکر شده 
    2,780
    تشکر شده در
    1,757 پست

    پیش فرض پاسخ : کی پاسکال بلده ؟

    والا منطق کار برنامه رو میدونم اما چجوری به زبان ماشین ترجمه کنم که این بیچاره بفهمه رو قاطی کردم...


  12. #8
    عضو انجمن Mohsen آواتار ها
    تاریخ عضویت
    May 2009
    نوشته ها
    340
    تشکر تشکر کرده 
    281
    تشکر تشکر شده 
    741
    تشکر شده در
    324 پست

    پیش فرض پاسخ : کی پاسکال بلده ؟

    نقل قول نوشته اصلی توسط Sajad نمایش پست ها
    والا منطق کار برنامه رو میدونم اما چجوری به زبان ماشین ترجمه کنم که این بیچاره بفهمه رو قاطی کردم...
    زبان ماشین! اسمبلی که منظورتون نیست؟!؟ فکر کنم منظورتون همون نوشتن برنامه هست!
    خوب پاسکال که شی‌گرا نیست! مثل c تابع می‌نویسند دیگه!
    برای هر کدوم از اون کارا یه تابع بنویسید!
    مثلا یه تابع برای تبدیل رشته ورودی به آرایه
    یه تابع برای تبدیل آرایه به حالت postfix و به همین ترتیب
    به تابع‌های پاسکال البته فکر میکنم میگن پروسیجر! و مقداری هم که بر می‌گردونند با متغییری هست که هم نام تابع هست، return و اینا ندارند! (هیچی c نمیشه!)
    بگذریم! تابع‌ها رو هر چقدر کوچیک تر کنید فهمیدن برنامه آسون تر میشه! یه مقدار سواد اولیه البته میخواد که اگه ندارن، شما بی خودی داری خودت رو اذیت می‌کنی!

  13. تعداد تشکر ها از Mohsen به دلیل پست مفید


  14. #9
    عضو انجمن RezaFH آواتار ها
    تاریخ عضویت
    Jul 2009
    محل سکونت
    تبریز
    نوشته ها
    699
    تشکر تشکر کرده 
    1,032
    تشکر تشکر شده 
    2,817
    تشکر شده در
    1,444 پست

    پیش فرض پاسخ : کی پاسکال بلده ؟

    منظورم این بود که میشه یه چیز دیگه هم نوشت ؟
    دومی و سومی ساده هستن
    بذارید من مثال بنویسم :

    برنامه ای که 10 عدد صحیح را بگیرد و در آرایه ها ذخیره کند . سپس تعداد اعداد زوج را نمایش دهد !

    روال نوشتن برنامه به این شکل هست :
    کد:
    program t1;
    var
    i,m:integer;
    no:array[1..10] of integer;
    begin
    writeln ('please enter your numbers :')
    for i:= 1 to 10 do
    readln (no [i] mod 2=0 then
    m:=m+1;
    writeln (' teedAde aadAde zooj =')
    end.
    در اینجا وقتی ورودی ها گرفته میشن ، در آرایه ها ذخیره میشن
    مثلا :[no[1 میشه عدد اول و بعد فراخوانی میشه و توی کارهای بعدی استفاده میشه

    راستش امتحان دارم و نمیرسم بشینم بنویسم
    اگه وقت هست بگید ، فردا صبح مینویسم

  15. #10
    عضو دائم
    تاریخ عضویت
    Jan 2009
    محل سکونت
    یزد
    نوشته ها
    2,773
    تشکر تشکر کرده 
    914
    تشکر تشکر شده 
    2,780
    تشکر شده در
    1,757 پست

    پیش فرض پاسخ : کی پاسکال بلده ؟

    به functionهای پاسکال نمیگن procedure. هر کدومشون یه چیز جدا هستند.
    که البته فانکشن رو به صورت پروسیجر هم میشه نوشت...
    کار نداریم.

    من خودم صبح یه کارایی خواستم بکنم اما قاطی کردم
    اولین کاری که کردم بعد از گرفتن رشته و اندازه گرفتن طول اون شروع کردم به verify کردن تک تک اون ...
    یعنی چک کردم که اون استرینگ شامل اعداد ۰..۹ باشه و یا اپراتورهای × ÷ − + باشه و اگه چیز دیگه ای هست اخطار بده !
    اگر استرینگ بدین صورت بهش میدادیم sfsfgsggs خطا میگرفت اگر 2232+2323 میدادی خطا نمیگرفت.
    اما یه مشکلی داشت که اگر 3243ddf232+3434 هم بهش میدادی خطا نمیگرفت در حالی که ddf وقتی اون وسط هست باید خطا میداد ؟

    ---------- Post added at 12:57 AM ---------- Previous post was at 12:48 AM ----------

    نقل قول نوشته اصلی توسط rezafh2 نمایش پست ها
    منظورم این بود که میشه یه چیز دیگه هم نوشت ؟
    دومی و سومی ساده هستن
    بذارید من مثال بنویسم :

    برنامه ای که 10 عدد صحیح را بگیرد و در آرایه ها ذخیره کند . سپس تعداد اعداد زوج را نمایش دهد !

    روال نوشتن برنامه به این شکل هست :
    کد:
    program t1;
    var
    i,m:integer;
    no:array[1..10] of integer;
    begin
    writeln ('please enter your numbers :')
    for i:= 1 to 10 do
    readln (no [i] mod 2=0 then
    m:=m+1;
    writeln (' teedAde aadAde zooj =')
    end.
    در اینجا وقتی ورودی ها گرفته میشن ، در آرایه ها ذخیره میشن
    مثلا :[no[1 میشه عدد اول و بعد فراخوانی میشه و توی کارهای بعدی استفاده میشه

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

    از لحاظ وقت مشکلی نیست تا شنبه صبح وقت دارن ببرن...

    من خودم کلا با حل مسائل ریاضی مشکل دارم چه برسه برنامه ای بخوام بنویسم که عبارت ریاضی رو حل کنه


صفحه 1 از 3 123 آخرینآخرین

اطلاعات موضوع

کاربرانی که در حال مشاهده این موضوع هستند

در حال حاضر 1 کاربر در حال مشاهده این موضوع است. (0 کاربران و 1 مهمان ها)

مجوز های ارسال و ویرایش

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