ورود

View Full Version : سوال: برنامه مورد نیاز



mehmoon2002
شنبه 08 خرداد 1395, 16:15 عصر
با سلام و خسته نباشید
3 تا برنامه استادمون گفته ک اصلا بلد نیستم میشه راهنمایی کنین

برنامه 1: برنامه ای بنویسید که یک عدد باینری (رشته ای از صفر و یک) از کاربر دریافت و معادل کد مکمل یک آنها را تولید کند.

برنامه 2: .................................................. .............................. و در ثبات bx قرار دهد و تعداد یک ها را چاپ کند

برنامه 3: .................................................. ............................. و معادل کد گری را محاسبه کند.

ممنون

vahid-p
یک شنبه 16 خرداد 1395, 16:51 عصر
خب برنامه اول منطق ساده ای داره. شما یک حافظه در نظر بگیرید براش (مثلا 20 تایی) و ضمن گرفتن هر عدد صفر یا یک، تعداد رو بشمارید. سپس از آخرین کاراکتر یعنی کم ارزشترین شروع کنید و هر وقت به اولین یک رسیدید (که با cmp میتونید مقایسه کنید یا میتونید از مقایسه مخصوص رشته ها استفاده کنید فقط جهت حرکت رو به سمت خانه های کمتر حافظه تنظیم کنید) اونوقت اون یک رو هم در نظر نگیرید و بقیه رو اگر یک بود صفر و اگر صفر بود یک. البته حواستون باشه که طول رشته رو از دست ندید. یکم کار میبره ولی منطقش سادست.

برنامه دوم هم هر بار که یک عدد صفر یا یک میگیری، مقدار صفر یا یک رو (معادل عددی نه کاراکتری) با مقدار ثبات bx جمع کن و یک شیفت به چپ بده و همین کار رو تکرار کن. بعد می تونی شیفت به چپ و راست بدی و عددی که در carry قرار میگیره رو چک کن ببین C=1 است یا C=0 که با جامپ های رقم نقلی (JC و JNC) قابل انجامه.

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

سعی کنید برای بعضی کارها مثل گرفتن عدد یک proc بنویسی که نخوای برای هر برنامه دوباره کدها رو تکرار کنی.