یک عدد چهار رقمی تصادفی بدون رقم تکراری

alirezabe

New Member
سلام
می خواستم بدونیم جطوری میشه تابعی برای یک عدد چهار رقمی تصادفی بدون رقم تکراری نوشت اگر کد طولانی دارد حداقل یک راهنمایی کنید
با تشکر
علیرضا
 

the_king

مدیرکل انجمن
سلام
می خواستم بدونیم جطوری میشه تابعی برای یک عدد چهار رقمی تصادفی بدون رقم تکراری نوشت اگر کد طولانی دارد حداقل یک راهنمایی کنید
با تشکر
علیرضا

شاید صدها روش متفاوت برای ایجاد چنین عددی وجود داشته باشد، من دو روش مثال می زنم :

روش اول یک رقم تصادفی بین 1 الی 9 را برای رقم هزارگان بدست می آوریم که در متغیر a قرار بگیرد.
سپس یک حلقه do while می سازیم که یک رقم تصادفی بین 0 الی 9 برای رقم صدگان ایجاد کند و در متغیر
b قرار دهد، حلقه زمانی خاتمه پیدا کند که a برابر b نباشد.
مجددا یک حلقه do while می سازیم که یک رقم تصادفی بین 0 الی 9 برای رقم دهگان ایجاد کند و در متغیر
c قرار دهد، حلقه زمانی خاتمه پیدا کند که c نه برابر با a باشد و نه برابر با b.
یک حلقه دیگر do while می سازیم که یک رقم تصادفی بین 0 الی 9 برای رقم یکان ایجاد کند و در متغیر
d قرار دهد، حلقه زمانی خاتمه پیدا کند که d با هیچکدام از ارقام a یا b یا cبرابر نباشد.

اگر متغیر های a و b و c و d با فرمول زیر با هم ترکیب شوند عدد چهار رقمی n حاصل می گردد :
n = a * 1000 + b * 100 + c * 10 + d

کد:
    int a, b, c, d;
    a = rand() % 9 + 1;
    do
        b = rand() % 10;
    while (b == a);
    do
        c = rand() % 10;
    while ((c == a) || (c == b));
    do
        d = rand() % 10;
    while ((d == a) || (d == b) || (d == c));
    int n = a * 1000 + b * 100 + c * 10 + d;

روش دوم یک رقم از رشته 123456789 انتخاب می کنیم و در a قرار می دهیم.
آن رقم a را از رشته حذف کرده و رقم "0" را بجایش قرار می دهیم.
مجددا یک رقم از رشته انتخاب کرده و در b قرار می دهیم و آن رقم b را از رشته حذف می کنیم.
مجددا یک رقم از رشته انتخاب کرده و در c قرار می دهیم و آن رقم c را از رشته حذف می کنیم.
مجددا یک رقم از رشته انتخاب کرده و در d قرار می دهیم.
ارقام abcd را کنار هم قرار داده و عدد مورد نظر حاصل می شود.

کد:
    int s[] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
    int a, b, c, d, x;
    x = rand() % 9;
    a = s[x];
    s[x] = 0;
    x = rand() % 9;
    b = s[x];
    s[x] = s[8];
    x = rand() % 8;
    c = s[x];
    s[x] = s[7];
    x = rand() % 7;
    d = s[x];
    int n = a * 1000 + b * 100 + c * 10 + d;
 

جدیدترین ارسال ها

بالا