آموزش ++c, زبان c++

کد گری در سی پلاس پلاس (Gray Code in Cplusplus)

کد گری در سی پلاس پلاس

در این جلسه تیم کدگیت را با آموزش کد گری در سی پلاس پلاس همراهی کنید.در ابتدای این آموزش در مورد کدگری صحبت خواهیم کرد سپس کد آن را در سی پلاس پلاس پیاده سازی خواهیم کرد. پیش نیاز این آموزش شامل موارد زیر است:

  1. آشنایی با توابع
  2. آشنایی با روش بازگشتی
  3. آشنایی با if

کد گری

نمایش کدهای دودویی که بعد از فرانک گری (Frank Gray) به نام کد گری شناخته شد که یک سیستم از اعداد دودویی است که هر دو عدد متوالی فقط در یک بیت با هم اختلاف داشته باشند. امروزه کد‌گری به طور گسترده برای تصحیح اشکالات در سیستم ارتباط دیجیتالی مثل کابل‌های تلویزیونی و تلویزیون‌های دیجیتالی جهانی استفاده می‌شود.

پیاده سازی کد گری در سی پلاس پلاس

برای پیاده سازی کد گری در سی پلاس پلاس ما از ایده تکرار الگوی هر رقم با رقم دیگر استفاده کردیم بدین صورت که مثلا بیت اول اعداد 1 تا 4 را ببینید بدین صورت است 0110 و همین الگو دوباره برای 4 رقم بعدی تکرار شده است. کد پیاده سازی کد گری در جاوا به صورت زیر است:

void yarg(string prefix, int n) {

    if (n == 0)

         cout << prefix << endl;

    else {

         gray(prefix + "1", n - 1);

         yarg(prefix + "0", n - 1);

    }

}

void gray(string prefix, int n) {

    if (n == 0)

         cout << prefix << endl;

    else {

         gray(prefix + "0", n - 1);

         yarg(prefix + "1", n - 1);

    }

}

کد بالا شامل دو متد زیر است:

  1. Gray: در این متد قسمت اول الگویی که گفته شد وارد کد میشود
  2. Yarg: در این متد قسمت دوم الگویی که در بالا توضیح داده شد وارد کد میشود.

متد های gray و yarg شامل 2 ورودی هستند یکی پیشوند یا همان رقم های قبلی و دیگری تعداد بیت باقیمانده. در هر دو متد بررسی می‌کنیم تعداد بیت صفر است یا خیر. در صورت صفر بودن عدد را چاپ می‌کنیم و در غیر این صورت الگوریتم را ادامه می‌دهیم.

تست کد گری در جاوا

برای تست کد گری، کد main زیر را بزنید.

int main() {

    int n = 3;

    gray("", n);

    return 0;

}

متغیر n تعداد بیت است. برای تعداد بیت 3 خروجی برنامه به صورت زیر است:

000

001

011

010

110

111

101

100

نوشته های مشابه

1 دیدگاه در “کد گری در سی پلاس پلاس (Gray Code in Cplusplus)

  1. پرستو گفت:

    ممنون از مطلب خوبتون

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *