خانه شیمی

X
  • آخرین ارسالات انجمن

  •  

    نمایش نتایج: از 1 به 15 از 15
    1. Top | #1
      کاربر نیمه فعال

      Mamoli
      نمایش مشخصات

      Lightbulb سوال برنامه نویسی

      سلام به همگی
      من یه سوال برنامه نویسی با زبان ++C دارم کسایی که میتونن کمکم کنن لطفا اعلام کنن

    2. Top | #2
      کاربر نیمه فعال

      Khabalod
      نمایش مشخصات
      نقل قول نوشته اصلی توسط M.NABI.Z نمایش پست ها


      بستگی دارع چه سوالی باشه
      بگید شاید اسون بود
      بله حق با مهندسه
      سوالتون رو بفرستین

    3. Top | #3
      کاربر نیمه فعال

      نمایش مشخصات
      بله بپرسید.

    4. Top | #4
      در انتظار تایید ایمیل

      نمایش مشخصات
      این جواب ارایه
      فکر نکنم درست باشه ولی
      دوستان هم حل کنن خوبه... ارایه دو بعدی تعریف کردم
      20171228_184412.jpg
      تصاوير کوچک فايل پيوست تصاوير کوچک فايل پيوست 20171228_184412.jpg  
      ویرایش توسط sasaa : 07 دی 1396 در ساعت 19:51

    5. Top | #5
      در انتظار تایید ایمیل

      نمایش مشخصات
      این برنامه مجموع و حاصلضربه دو متغیر aو b
      20171228_185834.jpg

    6. Top | #6
      کاربر نیمه فعال

      bi-tafavot
      نمایش مشخصات
      نقل قول نوشته اصلی توسط sasaa نمایش پست ها
      این برنامه مجموع و حاصلضربه دو متغیر aو b
      برای دیدن سایز بزرگ روی عکس کلیک کنید

نام: 20171228_185834.jpg
مشاهده: 88
حجم: 57.2 کیلو بایت
      درسته فقط a*b= که میخواستین تو خروجی بیاد (بعد دستور cout) قبلش یه " کم گذاشتین

    7. Top | #7
      در انتظار تایید ایمیل

      نمایش مشخصات
      نقل قول نوشته اصلی توسط MOHAMMAD-B نمایش پست ها
      درسته فقط a*b= که میخواستین تو خروجی بیاد (بعد دستور cout) قبلش یه " کم گذاشتین
      سریع نوشتم ببخشید

    8. Top | #8
      کاربر نیمه فعال

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

نام: 20171228_184412.jpg
مشاهده: 92
حجم: 71.9 کیلو بایت
      ممنون ولی منظور سوالم این نبود

    9. Top | #9
      کاربر نیمه فعال

      نمایش مشخصات
      نقل قول نوشته اصلی توسط S.N.M19 نمایش پست ها
      سلام به همگی
      من یه سوال برنامه نویسی با زبان ++C دارم کسایی که میتونن کمکم کنن لطفا اعلام کنن
      سلام ، در رابطه با سوالتون ، ببینید من الان برنامه ای براتون نوشتم که در آن از یک کلاس استفاده شده و تمام عملگر هایی (operators) که گفتین در آن به کار رفته. از عملگر << برای خواندن فایل متنی (txt.) استفاده می کنه و از عملگر >> که گفتین برای نوشتن جمع و ضرب دو عدد حقیقی در فایل استفاده می کنه. همچنین با به کار بردن عملگر های + و * هم جمع و ضرب رو انجام می ده. یعنی تمام کار های عملیاتی رو انجام می ده.
      ولی به نظر من بخش سخت سوالتون همون خط آخره که بیان کرده : " از یک آرایه برای نگهداری ارقام و دو متغیر برای مشخص کردن موقعیت اعشار و علامت عدد"
      خوب برای پیاده سازی این خواسته ی سوال باید بر روی بیت هایی که وظیفه ی ذخیره کردن عدد اعشاری را دارند به خوبی مسلط بود. بیت های "علامت" ، "علامتِ نما" ، "نما" و "مانتیس" . ولی من شناخت کافی از این بیت ها ندارم به خاطر همین نتونستم متغیر ها رو در قالب آرایه بنویسم. روش فکر کردم به راه حل هایی رسیدم ولی متاسفانه بر روی کامپیوتر من فعلا هیچ کامپایلری نصب نیست(پاکشون کردم) که بخوام این راه حل هایی رو که به ذهنم رسیده امتحان کنم. ( البته این برنامه ای که براتون نوشتم رو با یک کامپایلر آنلاین تست کردم درسته ، ولی امکانات خیلی پیشرفته ای نداره.)

      این لینک برنامه ای است که در کامپایلر آنلاین نوشتم : http://cpp.sh/2drg3
      ( یه توضیح : اون ()getch_ رو که آخر تابع main نوشتم باعث می شه که برنامه در آخر منتظر زدن یه کلید مثلا enter بشه و بعد که دکمه رو زدین به پایان برسه. احیاناً کتابخانه ی conio.h رو اگر کامپایلرتون قدیمی بود نداشت می تونین از کد برنامه حذفش کنین. البته کامپایلر های امروزی همشون دارن.)

      این راه حلی ای که من برای اون بخش آخر سوال دارم :
      هر عدد اعشاری رو ( یا هر عدد حقیقی) رو می شه به این شکل نوشت : a x 2^b
      که a یک عدد اعشاری بزرگتر مساوی 1 و کوچکتر از 2 است که بهش مانتیس می گن. b هم یک عدد صحیحه که بهش نما می گن.
      مثلا اگر بخواهیم عدد 40 رو به این شکل بنویسیم می شه : 5^2 * 1.25 = 40 ( که a = 1.25 بعد b = 5 ) بعد اگر بخواهیم این عدد رو در متغیر با نوع float ذخیره کنیم بیت هاش این جوری می شه : 010001001000000000000000000000
      بعد از چپ به راست :
      اولین بیت (0) بیت علامته چون 40 مثبته صفر شده اگه منفی بود یک می شد.
      دومین بیت (1) بیت علامتِ نما است و اینجوری تعیین می شه : چون b-1 = 4 مثبت شده پس بیت علامت 1 می شه. اگر منفی بود صفر می شد. ( درست برعکس بیت علامت)
      هفت تا بیت بعدی بیت های نما هستند که در مبنای دو می شن : 100 ( 0000100 )
      بقیه ی بیت ها هم بیت های مانتیس هستن. (که اصلا ازشون سر در نمی آرم!! نمی دونم چه جوری به دست میان!!)

      حالا به نظر من باید از روی بیت های عدد ، موقعیت اعشار و علامت عدد رو در متغیر ها ذخیره کرد. مثلا برای علامت عدد از یک متغیر با نوع bool استفاده کرد بعد یه if گذاشت که اگر بیت علامت عدد صفر بود مقدار متغیر با نوع bool بشه 1 و یعنی عدد مثبته در غیر اینصورت اگر بیت علامت یک بود مقدار bool بشه صفر.

      ------------------------------------------
      ویرایش :
      با این تابع می تونین بیت های یک متغیر را بدست بیارین : http://cpp.sh/9xq2t
      این جوری ازش استفاده کنین مثلا : ;(float a = 40.5; Byte(a
      بعد خودش بیت ها رو چاپ می کنه.
      ویرایش توسط hopluk : 08 دی 1396 در ساعت 04:51

    10. Top | #10
      کاربر نیمه فعال

      Mamoli
      نمایش مشخصات
      نقل قول نوشته اصلی توسط hopluk نمایش پست ها
      سلام ، در رابطه با سوالتون ، ببینید من الان برنامه ای براتون نوشتم که در آن از یک کلاس استفاده شده و تمام عملگر هایی (operators) که گفتین در آن به کار رفته. از عملگر << برای خواندن فایل متنی (txt.) استفاده می کنه و از عملگر >> که گفتین برای نوشتن جمع و ضرب دو عدد حقیقی در فایل استفاده می کنه. همچنین با به کار بردن عملگر های + و * هم جمع و ضرب رو انجام می ده. یعنی تمام کار های عملیاتی رو انجام می ده.
      ولی به نظر من بخش سخت سوالتون همون خط آخره که بیان کرده : " از یک آرایه برای نگهداری ارقام و دو متغیر برای مشخص کردن موقعیت اعشار و علامت عدد"
      خوب برای پیاده سازی این خواسته ی سوال باید بر روی بیت هایی که وظیفه ی ذخیره کردن عدد اعشاری را دارند به خوبی مسلط بود. بیت های "علامت" ، "علامتِ نما" ، "نما" و "مانتیس" . ولی من شناخت کافی از این بیت ها ندارم به خاطر همین نتونستم متغیر ها رو در قالب آرایه بنویسم. روش فکر کردم به راه حل هایی رسیدم ولی متاسفانه بر روی کامپیوتر من فعلا هیچ کامپایلری نصب نیست(پاکشون کردم) که بخوام این راه حل هایی رو که به ذهنم رسیده امتحان کنم. ( البته این برنامه ای که براتون نوشتم رو با یک کامپایلر آنلاین تست کردم درسته ، ولی امکانات خیلی پیشرفته ای نداره.)

      این لینک برنامه ای است که در کامپایلر آنلاین نوشتم : C++ Shell
      ( یه توضیح : اون ()getch_ رو که آخر تابع main نوشتم باعث می شه که برنامه در آخر منتظر زدن یه کلید مثلا enter بشه و بعد که دکمه رو زدین به پایان برسه. احیاناً کتابخانه ی conio.h رو اگر کامپایلرتون قدیمی بود نداشت می تونین از کد برنامه حذفش کنین. البته کامپایلر های امروزی همشون دارن.)

      این راه حلی ای که من برای اون بخش آخر سوال دارم :
      هر عدد اعشاری رو ( یا هر عدد حقیقی) رو می شه به این شکل نوشت : a x 2^b
      که a یک عدد اعشاری بزرگتر مساوی 1 و کوچکتر از 2 است که بهش مانتیس می گن. b هم یک عدد صحیحه که بهش نما می گن.
      مثلا اگر بخواهیم عدد 40 رو به این شکل بنویسیم می شه : 5^2 * 1.25 = 40 ( که a = 1.25 بعد b = 5 ) بعد اگر بخواهیم این عدد رو در متغیر با نوع float ذخیره کنیم بیت هاش این جوری می شه : 010001001000000000000000000000
      بعد از چپ به راست :
      اولین بیت (0) بیت علامته چون 40 مثبته صفر شده اگه منفی بود یک می شد.
      دومین بیت (1) بیت علامتِ نما است و اینجوری تعیین می شه : چون b-1 = 4 مثبت شده پس بیت علامت 1 می شه. اگر منفی بود صفر می شد. ( درست برعکس بیت علامت)
      هفت تا بیت بعدی بیت های نما هستند که در مبنای دو می شن : 100 ( 0000100 )
      بقیه ی بیت ها هم بیت های مانتیس هستن. (که اصلا ازشون سر در نمی آرم!! نمی دونم چه جوری به دست میان!!)

      حالا به نظر من باید از روی بیت های عدد ، موقعیت اعشار و علامت عدد رو در متغیر ها ذخیره کرد. مثلا برای علامت عدد از یک متغیر با نوع bool استفاده کرد بعد یه if گذاشت که اگر بیت علامت عدد صفر بود مقدار متغیر با نوع bool بشه 1 و یعنی عدد مثبته در غیر اینصورت اگر بیت علامت یک بود مقدار bool بشه صفر.

      ------------------------------------------
      ویرایش :
      با این تابع می تونین بیت های یک متغیر را بدست بیارین : C++ Shell
      این جوری ازش استفاده کنین مثلا : ;(float a = 40.5; Byte(a
      بعد خودش بیت ها رو چاپ می کنه.
      خیلی ممنون دستتون درد نکنه
      بله بخش سخت سوالش همون علامت و مقدار اعشارش هست
      الان منظور شما اینه که باید عدد رو در مبنای 2 ببریم؟

    11. Top | #11
      کاربر نیمه فعال

      نمایش مشخصات
      نقل قول نوشته اصلی توسط S.N.M19 نمایش پست ها


      خیلی ممنون دستتون درد نکنه
      بله بخش سخت سوالش همون علامت و مقدار اعشارش هست
      الان منظور شما اینه که باید عدد رو در مبنای 2 ببریم؟
      سلام.(فکرم عوض شد) خیر به نظر من بهتر است از دو تابع ()singbit و ()modf که در کتابخانه ی math.h قرار دارند استفاده کنیم ، که اولی علامت عدد را بر می گرداند و دومی بخش صحیح و بخش اعشاری عدد را جدا می کند. ( آره اول نظر من این بود اعداد رو ببریمشون در مبنای 2 بعد با بیت های علامت و مانتیس کار کنیم ولی این کار سخت می شه و از قبل طراحان سی پلاس پلاس این کارها را با بیت ها انجام دادن و به صورت توابع نوشتن. دیگر نیازی نیست برنامه نویس خیلی خودش رو درگیر بیت ها کنه هر چند روش اصولی همون روش کار با بیت هاست.)

      براتون دو تا مثال نوشتم :
      این لینک روش کار با تابع ()signbit رو نشونتون می ده (علامت عدد اعشار) : C++ Shell

      این لینک روش کار با تابع ()modf رو نشونتون می ده (مقدار اعشار) : C++ Shell

      دیگه فکر کنم سوالتون حل شد. کافیه این دو تا تابع رو در کلاسی که براتون نوشتم اضافه کنین و بعد از اون ها در << operator که فایل رو می خونه استفاده کنین تا علامت عدد و مقدار اعشار رو بلافاصله در دو متغیر bool و float(یا double) ذخیره کنه.
      ویرایش توسط hopluk : 08 دی 1396 در ساعت 18:08

    12. Top | #12
      کاربر نیمه فعال

      Mamoli
      نمایش مشخصات
      نقل قول نوشته اصلی توسط hopluk نمایش پست ها
      سلام.(فکرم عوض شد) خیر به نظر من بهتر است از دو تابع ()singbit و ()modf که در کتابخانه ی math.h قرار دارند استفاده کنیم ، که اولی علامت عدد را بر می گرداند و دومی بخش صحیح و بخش اعشاری عدد را جدا می کند. ( آره اول نظر من این بود اعداد رو ببریمشون در مبنای 2 بعد با بیت های علامت و مانتیس کار کنیم ولی این کار سخت می شه و از قبل طراحان سی پلاس پلاس این کارها را با بیت ها انجام دادن و به صورت توابع نوشتن. دیگر نیازی نیست برنامه نویس خیلی خودش رو درگیر بیت ها کنه هر چند روش اصولی همون روش کار با بیت هاست.)

      براتون دو تا مثال نوشتم :
      این لینک روش کار با تابع ()signbit رو نشونتون می ده (علامت عدد اعشار) : C++ Shell

      این لینک روش کار با تابع ()modf رو نشونتون می ده (مقدار اعشار) : C++ Shell

      دیگه فکر کنم سوالتون حل شد. کافیه این دو تا تابع رو در کلاسی که براتون نوشتم اضافه کنین و بعد از اون ها در << operator که فایل رو می خونه استفاده کنین تا علامت عدد و مقدار اعشار رو بلافاصله در دو متغیر bool و float(یا double) ذخیره کنه.
      خیلی ممنون از وقتی که گذاشتین
      فقط یه سوال داشتم من میخوام مقدار علامت رو در ارایه نشون بده چیکار کنم؟
      و من نمیخوام قسمت اعشار و صحیح رو جدا کنه
      من میخوام خروجیم اینجوری باشه:
      تو فایل 324456 و 1 و -1 رو وارد کنم و خروجیم این بشه0.324456+
      ویرایش توسط S.N.M19 : 09 دی 1396 در ساعت 00:01

    13. Top | #13
      کاربر نیمه فعال

      نمایش مشخصات
      نقل قول نوشته اصلی توسط S.N.M19 نمایش پست ها

      خیلی ممنون از وقتی که گذاشتین
      فقط یه سوال داشتم من میخوام مقدار علامت رو در ارایه نشون بده چیکار کنم؟
      و من نمیخوام قسمت اعشار و صحیح رو جدا کنه
      من میخوام خروجیم اینجوری باشه:
      تو فایل 324456 و 1 و -1 رو وارد کنم و خروجیم این بشه0.324456+
      صورت سوال گفته که یک متغیر برای مشخص کردن موقعیت اعشار بعد شما در خط آخر گفتین که 324456 رو از فایل بخونه خروجی بده : 0.324456+ ؟ خوب اینکه اعشار زدن عدده موقعیت اعشار رو نشون نمی ده!
      به هر حال اینی که پرسیدین خیلی آسونه یه کم ریاضی نیاز داره. براتون نوشتم : C++ Shell

      (برنامه ای که به عنوان مثال برای تابع modf براتون نوشته بودم اگر بهش برای مثال عدد 3.141592 رو بدین در یک متغیر به نام fractional اون بخش 0.141592 رو ذخیره می کنه.)

      در مورد اون بخش سوالتون که راجع به "نشون دادن(؟ ذخیره کردن؟) مقدار (؟) علامت در آرایه" بود ، کلا یه دونه علامت مثبت یا منفی رو می خواین در آرایه نشون بدین ؟ یه دونه متغیر با نوع bool کافیه.
      اگر هم منظورتون اینه که : کل عدد رو که تک تک ارقامش رو در یک آرایه ذخیره کردین و بعد می خواین به اون علامت عدد دسترسی داشته باشین، شما اول باید با استفاده از تابع ()signbit علامت عدد رو در اولین آفست(یا اندیس) آرایه ذخیره کنین و بعد هر موقع خواستین از روی اولین اندیس بتونین بفهمین که عدد مثبت است یا منفی. مثلا یه آرایه از نوع double دارین با استفاده از ()signbit علامت عدد رو بدست بیارین بعد مثلا اگر منفی بود در اولین اندیس (اندیس صفر) عدد 1 در غیر اینصورت عدد 0 ذخیره کنین. بعد با یه if شرط بذارین که اگر اولین اندیس اون آرایه برابر 1 بود عدد منفی و صفر بود عدد مثبته. بعد از اندیس های بعدی(اندیس یک به بعد) آرایه برای ذخیره ی بقیه ی عدد استفاده کنین.

    14. Top | #14
      کاربر نیمه فعال

      Mamoli
      نمایش مشخصات
      نقل قول نوشته اصلی توسط hopluk نمایش پست ها
      صورت سوال گفته که یک متغیر برای مشخص کردن موقعیت اعشار بعد شما در خط آخر گفتین که 324456 رو از فایل بخونه خروجی بده : 0.324456+ ؟ خوب اینکه اعشار زدن عدده موقعیت اعشار رو نشون نمی ده!
      به هر حال اینی که پرسیدین خیلی آسونه یه کم ریاضی نیاز داره. براتون نوشتم : C++ Shell

      (برنامه ای که به عنوان مثال برای تابع modf براتون نوشته بودم اگر بهش برای مثال عدد 3.141592 رو بدین در یک متغیر به نام fractional اون بخش 0.141592 رو ذخیره می کنه.)

      در مورد اون بخش سوالتون که راجع به "نشون دادن(؟ ذخیره کردن؟) مقدار (؟) علامت در آرایه" بود ، کلا یه دونه علامت مثبت یا منفی رو می خواین در آرایه نشون بدین ؟ یه دونه متغیر با نوع bool کافیه.
      اگر هم منظورتون اینه که : کل عدد رو که تک تک ارقامش رو در یک آرایه ذخیره کردین و بعد می خواین به اون علامت عدد دسترسی داشته باشین، شما اول باید با استفاده از تابع ()signbit علامت عدد رو در اولین آفست(یا اندیس) آرایه ذخیره کنین و بعد هر موقع خواستین از روی اولین اندیس بتونین بفهمین که عدد مثبت است یا منفی. مثلا یه آرایه از نوع double دارین با استفاده از ()signbit علامت عدد رو بدست بیارین بعد مثلا اگر منفی بود در اولین اندیس (اندیس صفر) عدد 1 در غیر اینصورت عدد 0 ذخیره کنین. بعد با یه if شرط بذارین که اگر اولین اندیس اون آرایه برابر 1 بود عدد منفی و صفر بود عدد مثبته. بعد از اندیس های بعدی(اندیس یک به بعد) آرایه برای ذخیره ی بقیه ی عدد استفاده کنین.
      ببخشید که ازتون انقدر سوال میکنم این پروژه خیلی واسم مهمه
      ببینین الان من میخوام برنامم اینجوری اجرا بشه:
      مثلا کاربر تو فایل وارد کنه 8127_ 1_ -1 (الف و 94328 _ -2 _ 1 (ب(این خط فاصله ها رو میخواستم بین اعدادم فاصله بندازم که نشد)
      که 1 و -2 برای موقعیت اعشارند و -1 و 1 برای علامت عددند
      اون وقت خروجی فایل ما قسمت های الف و ب رو به شکل زیر نمایش میده
      قسمت الف) 8.127- قسمت ب)0.0094328
      که در قسمت الف -1 برای علامت منفی و 1 برای موقعیت اعشاره که اعشار رو یه رقم به سمت راست میبره
      و در قسمت ب 1 برای علامت مثبت و -2 برای موقعیت اعشاره که اعشار رو 2 رقم به سمت چپ میبره
      حالا میخوایم قسمت الف و ب رو از فایل بخونه و جمع و ضرب کنه
      من 324456 رو مثال زدم منظورم این نبود که حتما 0.324456+ رو چاپ کنه
      امیدوارم متوجه منظورم شده باشید
      بازم ممنون و ببخشید

    15. Top | #15
      کاربر نیمه فعال

      نمایش مشخصات
      نقل قول نوشته اصلی توسط S.N.M19 نمایش پست ها

      ببخشید که ازتون انقدر سوال میکنم این پروژه خیلی واسم مهمه
      ببینین الان من میخوام برنامم اینجوری اجرا بشه:
      مثلا کاربر تو فایل وارد کنه 8127_ 1_ -1 (الف و 94328 _ -2 _ 1 (ب(این خط فاصله ها رو میخواستم بین اعدادم فاصله بندازم که نشد)
      که 1 و -2 برای موقعیت اعشارند و -1 و 1 برای علامت عددند
      اون وقت خروجی فایل ما قسمت های الف و ب رو به شکل زیر نمایش میده
      قسمت الف) 8.127- قسمت ب)0.0094328
      که در قسمت الف -1 برای علامت منفی و 1 برای موقعیت اعشاره که اعشار رو یه رقم به سمت راست میبره
      و در قسمت ب 1 برای علامت مثبت و -2 برای موقعیت اعشاره که اعشار رو 2 رقم به سمت چپ میبره
      حالا میخوایم قسمت الف و ب رو از فایل بخونه و جمع و ضرب کنه
      من 324456 رو مثال زدم منظورم این نبود که حتما 0.324456+ رو چاپ کنه
      امیدوارم متوجه منظورم شده باشید
      بازم ممنون و ببخشید
      خواهش می کنم.
      الان در مثالی که زدین اعشار رو 7 رقم به چپ برده نه دو رقم! 94328.0 => اگر دو رقم به سمت چپ بره که می شه : 943.28
      منظورتون اینه در فایل به ترتیب از چپ به راست بخونه 94328 2- 1 (به ازای اون 1 عدد رو مثبت کنه، به ازای اون 2- دو رقم اعشار رو بیاره چپ 943.28)
      پس اگر در فایل این بود 8127 1 1- خروجی می شه : 81270- (به ازای اون 1- اولی عدد منفی شد و به ازای اون 1 یک رقم اعشار رفت راست)
      درست فهمیدم ؟
      (پ.ن. این الان کلاً یه سوال متفاوت با اون چیزی شد که از من پرسیده بودین.)

      ----------------------------------------------------
      ویرایش :
      اگر منظورتون اون چیزی بود که من بیان کردم ، بر همین اساس این برنامه رو نوشتم : http://cpp.sh/8ew5r
      برنامه ای که نوشتم الان همین کاری رو می کنه که شما گفتین.
      ویرایش توسط hopluk : 09 دی 1396 در ساعت 23:17

    افراد آنلاین در تاپیک

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

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




    آخرین مطالب سایت کنکور

  • تبلیغات متنی انجمن