اطلاعیه

Collapse
No announcement yet.

تقسیم اعداد

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    تقسیم اعداد

    سلام بر تمامی دوستان عزیز
    من یه سوال داشتم؟
    فرض می کنیم ما دو عدد 10 و 4 داریم که می خواهیم 10 را بر 4 تقسیم کنیم. 2.5=4/10
    A=10
    B=4
    C=0
    C=A/B
    حالا 2.5 توی C قرار داره یا فقط عدد 2 تو C قرار داره. البته متغیر های از نوع BYTE هستند.
    اگه فقط 2 قرار داره اون نیم رو با چه دستوری ازش استفاده کنیم.
    خلاصه من می خوام دو تا عدد رو بر هم تقسیم کنم خارج قسمت اونو بریزم توی یه متغییر و باقیمانده اونو هم بریزم توی یه متغییر دیگه. باید با چه دستوری این کار رو انجام بدم یا چه روشی؟؟
    هرکی با هر روشی که می تونه بنویسه!

    من با BASCOM و AVR کار می کنم.

    در اصل من می خواهم یک عدد بزرگ مثلا Long که مثلا عدد 1378 توش هست رو به چهار بایت تجزیه کنم یعنی 1 توی یه بایت و 3 و توی یه بایت و ...

    #2
    پاسخ : تقسیم اعداد

    سلام.

    برای تقسیم که از / استفاده میکنی و مشکلی هم نداره ولی برای مقدار باقیمانده میتونی از دستور mod استفاده کنی.

    برای مثال داخل تغییر A مقدار 25 هستش. و میخایم بر 10 تقسیم کنیم اگه اینطوری عمل کنیم 10/25 جواب 5.2 هستش.

    که در واقع 2 در متغییر مورد نظر قرار میگیره.
    برای اینکار میتونیم از دستور X=A mod 10 استفاده کنیم که اگه به این صورت عمل کنیم داخل متغییر x مقدار 5 (که همان مقدار با قیمانده ما است قرار میگیره). و برای قسمت صحیح هم از همون 10/25 =Y استفاده میکنیم.

    و در آخر اگه خواستیم بر روی lcd نمایش بدیم به این صورت نمایش میدیم

    lcd Y ; "," ; x
    روی lcd مقدار 2.5 رو نشون میده.
    www.icesi.ir

    دیدگاه


      #3
      پاسخ : تقسیم اعداد

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

      دیدگاه


        #4
        پاسخ : تقسیم اعداد

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

        دیدگاه


          #5
          پاسخ : تقسیم اعداد

          سلام از دوستان میدونن ژرا من عددمثلا 1256رو تقسیم به 100 میکنم هم عدد صحیح و هم باقی مانده رو 0 نشون میده روی ال سی دی؟
          { خلاف قوانین - پاک شد }

          دیدگاه


            #6
            پاسخ : تقسیم اعداد

            نوشته اصلی توسط r-el
            سلام از دوستان میدونن ژرا من عددمثلا 1256رو تقسیم به 100 میکنم هم عدد صحیح و هم باقی مانده رو 0 نشون میده روی ال سی دی؟
            درود
            برنامه را بگذارید
            [b]چگونه همه پایه های میکروکنترلر AVR را PWM کنیم؟
            معرفی نرم افزارEasy 7segment (برای راه اندازی آسانتر 7segment )
            معرفی نرم افزار Codewizard PWM
            با من بیشتر آشنا شوید

            دیدگاه


              #7
              پاسخ : تقسیم اعداد

              $regfile = "m32def.dat"
              $crystal = 8000000

              Config Lcdpin = Pin , Db4 = Pina.2 , Db5 = Pina.3 , Db6 = Pina.4 , Db7 = _
              Pina.5 , Rs = Pina.0 , E = Pina.1
              Config Lcd = 16 * 2

              Dim C As Byte , A As Word , B As Byte

              A = 4456

              B = A / 10
              C = A Mod 10

              Do
              Cls : Lcd A ; B
              Loop
              جواب 00
              { خلاف قوانین - پاک شد }

              دیدگاه


                #8
                پاسخ : تقسیم اعداد

                تقسیم به 100هم همینه
                { خلاف قوانین - پاک شد }

                دیدگاه


                  #9
                  پاسخ : تقسیم اعداد

                  تقسیم به 100هم همینه

                  اومدم متغیر رو long تعریف کردم راحت نمایش میده ما وقتی لایبرری ds1307 رو میذارم ارور lable not found (_printlong) میده


                  $regfile = "m32def.dat"
                  $crystal = 8000000

                  Config Lcdpin = Pin , Db4 = Pina.2 , Db5 = Pina.3 , Db6 = Pina.4 , Db7 = _
                  Pina.5 , Rs = Pina.0 , E = Pina.1
                  Config Lcd = 16 * 2
                  '------------------------------------- ds1307 ----------------------------------
                  $lib "mcsbyte.lbx" ' for smaller code
                  $lib "ds1307clock.lib"
                  Config Sda = Portd.1
                  Config Scl = Portd.0
                  Const Ds1307w = &HD0 ' Addresses of Ds1307 clock
                  Const Ds1307r = &HD1 ' ANSI-Format
                  Config Clock = User
                  '-------------------------------------------------------------------------------

                  Dim W As Byte , A As Long , B As String * 10

                  A = 4456

                  Do
                  Cls : Lcd A
                  Loop
                  Wait 1

                  این خظ که حذف بشه ارور میره
                  $lib "mcsbyte.lbx" ' for smaller code
                  :cry2:
                  { خلاف قوانین - پاک شد }

                  دیدگاه


                    #10
                    پاسخ : تقسیم اعداد

                    نوشته اصلی توسط r-el
                    [code=qbasic]$regfile = "m32def.dat"
                    $crystal = 8000000

                    Config Lcdpin = Pin , Db4 = Pina.2 , Db5 = Pina.3 , Db6 = Pina.4 , Db7 = _
                    Pina.5 , Rs = Pina.0 , E = Pina.1
                    Config Lcd = 16 * 2

                    Dim C As Byte , A As Word , B As Byte

                    A = 4456

                    B = A / 10
                    C = A Mod 10

                    Do
                    Cls : Lcd A ; B
                    Loop
                    end
                    [/code]
                    جواب 00
                    حق بهش میدم ...
                    جواب را درست گفته !!!
                    چون متغیر B سر ریز میشه ... یعنی جوابش از 255 بیشتر میشه ...
                    این برنامه رو امتحان کردم ... درست جواب داد
                    [code=qbasic][code=vb]$regfile = "m32def.dat"
                    $crystal = 8000000

                    Config Lcdpin = Pin , Db4 = Pina.2 , Db5 = Pina.3 , Db6 = Pina.4 , Db7 = _
                    Pina.5 , Rs = Pina.0 , E = Pina.1
                    Config Lcd = 16 * 2

                    Dim C As Byte , A As Word , B As Word

                    A = 4456

                    B = A / 10
                    C = A Mod 10
                    Cls
                    Lcd "A=" ; A ; " B=" ; B
                    Locate 2 , 1
                    Lcd "C=" ; C


                    Do

                    Loop
                    end
                    [/code]

                    موفق باشید

                    اضافه شده در تاریخ :
                    راستی یادم رفت بگم
                    توی حلقه تکرار نباید تند تند روی LCD نمایش داد !!!
                    باید یه زمان تاخیری بین نمایش قبلی و بعدی باشه
                    [b]چگونه همه پایه های میکروکنترلر AVR را PWM کنیم؟
                    معرفی نرم افزارEasy 7segment (برای راه اندازی آسانتر 7segment )
                    معرفی نرم افزار Codewizard PWM
                    با من بیشتر آشنا شوید

                    دیدگاه


                      #11
                      پاسخ : تقسیم اعداد

                      ممنون ولی من همینکار رو هم کردم b=a/100 و c=a mod 100
                      میزنه 00 حالا چه بایت و چه ورد ضمنا چرا a رو 0 میزنه حالا b هیچی هر چند سرریز میکنه نباید صفر بشه مقدار داره

                      از اینا گذشته اینکارا تمامش علتش اینه که نمیتونم لانگ رو نمایش بدم و ارور _printlong میده
                      { خلاف قوانین - پاک شد }

                      دیدگاه


                        #12
                        پاسخ : تقسیم اعداد

                        نوشته اصلی توسط r-el
                        ممنون ولی من همینکار رو هم کردم b=a/100 و c=a mod 100
                        میزنه 00 حالا چه بایت و چه ورد ضمنا چرا a رو 0 میزنه حالا b هیچی هر چند سرریز میکنه نباید صفر بشه مقدار داره

                        از اینا گذشته اینکارا تمامش علتش اینه که نمیتونم لانگ رو نمایش بدم و ارور _printlong میده
                        من توی پروتئوس تست زدم...
                        درست جواب داد ...
                        پس توی عمل هم جواب میده ...
                        شما برنامه من رو کامپایل کردید و جواب نداد ؟؟؟؟
                        [b]چگونه همه پایه های میکروکنترلر AVR را PWM کنیم؟
                        معرفی نرم افزارEasy 7segment (برای راه اندازی آسانتر 7segment )
                        معرفی نرم افزار Codewizard PWM
                        با من بیشتر آشنا شوید

                        دیدگاه


                          #13
                          پاسخ : تقسیم اعداد

                          من الان سخت افزار جلومه داداش عملی تست میکنم به این پروتئوس احمقم اصلا اعتقادی ندارم چند بار تاحالا سرکارم گذاشته
                          { خلاف قوانین - پاک شد }

                          دیدگاه


                            #14
                            پاسخ : تقسیم اعداد

                            شما میدونین ارور که میده چیه؟ :cry2:
                            { خلاف قوانین - پاک شد }

                            دیدگاه


                              #15
                              پاسخ : تقسیم اعداد

                              نوشته اصلی توسط r-el
                              من الان سخت افزار جلومه داداش عملی تست میکنم به این پروتئوس احمقم اصلا اعتقادی ندارم چند بار تاحالا سرکارم گذاشته
                              دوست عزیز
                              به این پروتئوس توهین نکن!!! خیلی بهش مدیونم !!! خیلی از پروژهام رو با همین نرم افزار به پایان رسوندم !!! الان رگ غیرتم باد کرده
                              ببین اینجارو ...


                              نوشته اصلی توسط r-el
                              شما میدونین ارور که میده چیه؟ :cry2:
                              من خطایی ندیدم ...


                              اضافه شده در تاریخ :
                              شاید برای نرم افزارتون باشه ...
                              این رو بگیرش
                              http://s5.picofile.com/file/8120870600/BASCOM_AVR_2_0_7_3_Techno_Electro_COM_.zip.html
                              نصب کن
                              به امید خدا درست میشه
                              [b]چگونه همه پایه های میکروکنترلر AVR را PWM کنیم؟
                              معرفی نرم افزارEasy 7segment (برای راه اندازی آسانتر 7segment )
                              معرفی نرم افزار Codewizard PWM
                              با من بیشتر آشنا شوید

                              دیدگاه

                              لطفا صبر کنید...
                              X