اطلاعیه

Collapse
No announcement yet.

جدا کردن یکان و دهگان ازهم و...

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

    جدا کردن یکان و دهگان ازهم و...

    سلام
    ببخشید من یک سئوالی داشتم :
    میشه یک متغیر از نوع بایت رو برداشت و یکان و دهگان و صد گانش رو جدا کرد و هرکدوم رو به تنهایی داخل یک متغیر قرار داد ؟
    قبل از همکاری صمیمانه شما سپاس گذارم

    #2
    پاسخ : جدا کردن یکان و دهگان ازهم و...

    آره.
    خودم هم داشتم جداشون میکردم تازه.
    متغییر هات از جنس(اعداد صحیح) باشن.
    میتونی برای اعداد بزرگتر هم این کار رو بکنی.



    دوستان روش دیگه ای هم هست برای این کار؟
    مثلا اصلا ندونیم ورودی چه عددی قراره بگیریم ممکنه 4 رقمی باشه یا 5 یا 2 ، بعد بیایم جداشون کنیم از هم.
    به سمت نور خورشید حرکت کن،تو میتونی تابش خورشید رو حس کنی ،حتی اگه کور باشی.
    (پیش به سوی هدف)

    دیدگاه


      #3
      پاسخ : جدا کردن یکان و دهگان ازهم و...

      معمولا در الگوریتم هایی که نوع ورودی نیست در قدم اول نوع ورودی بررسی میشه و بعد تابع یا زیر روال مربوط به اون نوع تبدیل فراخوانی میشه، در زبان های سطح بالا و متوسط که تقریبا همیشه نوع متغییر شما مشخص هست و اساسا زمانی که نمیدونید متغییر ورودی از چه نوعی هست برای اطمینان یک متغییر با حداکثر ظرفیتی که احتمال میدید داشته باشه بهش اختصاص میدید که محاسباتتون روی اون متغییر اشتباه نشه، مثلا متغییر رو از نوع 32 بیتی انتخاب میکنید در حالی که ممکن هست اون متغییر ورودی گاهی 8 بیتی هم باشه، بعد برای انجام محسابات برای اینکه زمان زیادی از سی پی یو گرفته نشه و سرعت برنامه زیاد کاهش پیدا نکنه اول نوع متغییر رو در میارید، مثلا اگر قرار هست یک عدد 32 بیتی بر متغییر شما تقسیم بشه شما نمیاید یکراست الگوریتم تقسیم 32 بیت به 32 بیت رو اجرا کنید، اول میاید از 8 بیت بالا چگ میکنید اگر این بایت 8 بیتی برابر صفر نبود تقسیم 32 بیت به 32 بیت رو فراخوانی میکنید اما اگر برابر صفر بود پس متغییر شما یا 24 بیتی هست یا 16 یا 8 بیتی، در مرحله بعد 8 بیت بعدی رو چک میکنید اگر برابر صفر نبود تقسیم 32 بیت به 24 بیت رو فراخوانی میکنید اما اگر باز هم صفر بود پس دیگه عدد ورودی یا 16 بیتی هست یا 8 بیتی، همین فرایند رو در ابتدا برای 4 بایت چک میکنید تا روتین مربوطه رو فراخوانی کنید که زمان سی پی یو زیاد تلف نشه، بخصوص در یک میکرو مثل avr که دستورالعمل تقسیم وجود نداره تقسیم 32 بیت بر 32 32 بیت خیلی زمانگیرتر و سنگین تر از تقسیم 32 بیت بر 8 یا 16 بیت هست ( البته متغییر 24 بیتی در زبان C نداریم یا 32 هست یا 16 یا 8 من به طور کلی الگوریتم چک کردن رو توضیح دادم جوری که انگار بخواید روی کاغذ انجام بدید ) ضمن اینکه برای افزایش سرعت تبدیل میشه در مواردی از روش هایی غیر از تقسیم مستقیم استفاده کرد مثلا برای ضرب یا تقسیم بر 2 و اعداد مشابه میشه از دستورالعمل های شیفت به چپ یا راست استفاده کرد، یا برای تشخیص صدگان و امثال اون گاهی میشه از عملیات منطقی استفاده کرد که سرعت بیشتری نسبت به روتین های انجام تقسیم دارند. در روشی که آقا حسین توضیح داد برای مورد شما مناسب هست و جواب هم میده فقط باید این نکته رو در نظر داشته باشید که اگر این روال بخواد روی یک میکروکنترلر مثل AVR پیاده بشه با توجه به اینکه AVR دستور تقسیم نداره مدت زمان نسبتا زیادی صرف میشه ( از نظر سیکل اجرایی زیاد هست وگرنه نسبت به زمان کلی تاخیری به چشم نمیاد ) تا این فرآیند سپری بشه و باید این تاخیر رو در نظر بگیرید.
      از آنجا که گاهی فرصت بازخوانی پست نیست، بابت غلط های املایی و نگارشی احتمالی معذرت میخوام.
      هیچیک از پاسخ هایی که میدم را کاملا تایید نمیکنم و ممکن هست اشتباه کرده باشم، اگر من به نوشته ام مطمئن هستم شما مشکوک باشید.
      اگر در حل مشکل من کمک کردید و دکمه تشکر رو نزدم حتما فراموش کردم کوچکترین کمک شما برایم ارزشمند است!
      اگر به هر طریقی از من ناراحت شدید حتما با یک پیام خصوصی تذکر بدهید تا مشکل رو حل کنیم و رابطه ی صمیمانه، پایدار بماند.
      شاد و موفق باشید

      دیدگاه


        #4
        پاسخ : جدا کردن یکان و دهگان ازهم و...

        ممنون از پاسخ هایی که دادید
        آما...
        میشه یک مثال ساده بزنید ؟
        مثلا عدد 12 رو ، رقم هاش رو تک تک به زبان بیسیک جداکنید و هرکدوم رو داخل یک متغیر بزارید
        عدد های من هم نهایتا دو رقمی هستند یعنی یا یک رقمی اند یا دو رقمی

        دیدگاه


          #5
          پاسخ : جدا کردن یکان و دهگان ازهم و...

          نوشته اصلی توسط Study
          ........
          دوسته عزیز یخورده تخصصی توضیح دادین ، هرچی میخونم نمیگیرم، و علاوه بر این دوست دارم این روش رو یاد بگیرم ، چون معمولا تو c++ داده های ورودی ممکنه که بزرگ باشن و این روش من دردسر دار هست، اگه براتون امکان داره بسیار ساده تر و همراه یه مثال کوچیک بگید. با تشکر از شما.

          نوشته اصلی توسط alireza shabani parsa
          ممنون از پاسخ هایی که دادید
          آما...
          میشه یک مثال ساده بزنید ؟
          مثلا عدد 12 رو ، رقم هاش رو تک تک به زبان بیسیک جداکنید و هرکدوم رو داخل یک متغیر بزارید
          عدد های من هم نهایتا دو رقمی هستند یعنی یا یک رقمی اند یا دو رقمی
          کد:
          $regfile = "m16def.dat"
          $crystal = 1000000
          Dim A As Byte
          Dim Dahgan As Byte
          Dim Yekan As Byte
           A = 12
           Dahgan = A / 10
           Yekan = A Mod 10
           End
          همون عملیات ساده ی ریاضی تو دوره راهنمایی هست.زیاد دردسر دار نیست.
          به سمت نور خورشید حرکت کن،تو میتونی تابش خورشید رو حس کنی ،حتی اگه کور باشی.
          (پیش به سوی هدف)

          دیدگاه


            #6
            پاسخ : جدا کردن یکان و دهگان ازهم و...

            جناب ممنون از پاسختون
            ولی
            میشه یک مقدار در مورد دستور مد بگید و اینکه چه اتتفاقی می افتد؟ :eek:

            دیدگاه


              #7
              پاسخ : جدا کردن یکان و دهگان ازهم و...

              Mod باقیمانده هست دیگه؛
              مثلا شما بیاید 5رو تقسیم بر 3 کنید.
              حاصلی که زیر کسر میمونه 2 هست، به اون 2 می گن باقیمانده.
              شما رو کاغذ تقسیم رو انجام بدید، متوجه میشید.
              موفق باشید.
              به سمت نور خورشید حرکت کن،تو میتونی تابش خورشید رو حس کنی ،حتی اگه کور باشی.
              (پیش به سوی هدف)

              دیدگاه


                #8
                پاسخ : جدا کردن یکان و دهگان ازهم و...

                سلام
                از دستور right وleft میتونید استفاده کنید،تا دورقم آسونه بعدش یکم پیچیده میشه

                دیدگاه


                  #9
                  پاسخ : جدا کردن یکان و دهگان ازهم و...

                  http://www.eca.ir/forum2/index.php?topic=102119.0
                  تو همین صفحه کد هارو اقای اسدی نوشتن قرار دادن حتی یسری کد هست که ممیزرو هم حساب میکنه

                  اضافه شده در تاریخ :
                  http://www.eca.ir/forum2/index.php?topic=90246.msg647066#msg647066 :applause: :applause: :applause:
                  http://s6.uplod.ir/i/00674/9cm41hm4inx0.jpg

                  دیدگاه


                    #10
                    پاسخ : جدا کردن یکان و دهگان ازهم و...

                    <div><br class="Apple-interchange-newline">اینجا به خاطر افرادی مثل شما دوستان است که به یک انجمن الکترونیک عالی تبدیل شده است با تشکر از همه شما دوستان کمک می کند</div>[COLOR=rgba(0, 0, 0, 0.87)][/COLOR]
                    [COLOR=rgba(0, 0, 0, 0.87)]


                    [/COLOR]
                    [COLOR=rgba(0, 0, 0, 0.87)][/COLOR]

                    دیدگاه

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