بازی حدس عدد با سی پلاس

یک زحمت دیگه

برنامه ای بنویسید که سیستم عددی را تولید کند و کاربر حدس زند که چه عددی است اگر کاربر درست حدس زده باشد برنامه اتمام می یابد در غیر این پیام چاپ کند و عدد دیگر را از کاربر دریافت کند
Break() , continue() , rand()
 

the_king

مدیرکل انجمن
کدوم پیغام رو چاپ کنه؟ باید در نوشتن برنامه از این تابع و فرمانها استفاده بشه؟

کد:
#include "stdio.h"
#include "conio.h"
#include "iostream.h"
#include "stdlib.h"

void main()
{
    int i, n = rand() % 100;
    clrscr();
    do
    {
        cout << endl << "Please enter the correct number : ";
        cin >> i;
        if (i == n)
            break;
        if (n > i)
        {
            cout << "No, Try a greater number.";
            continue;
        }
        cout << "No, Try a less number.";
    } while (i!=n);
}

نیازی برای بکارگیری break و continue نبود ولی گویا می خواستید که ازشون استفاده بشه.
 

the_king

مدیرکل انجمن
کد:
#include "stdio.h"
stdio در این برنامه کاربردی ندارد ولی بصورت کلی هر وقت include نکردم ازم پرسیدن چرا ننوشتی؟

کد:
#include "conio.h"
برای استفاده از تابع ()clrscr به conio احتیاج داریم.


کد:
#include "iostream.h"
برای استفاده از cin و cout به iostream نیاز داریم.

کد:
#include "stdlib.h"
تابع ()rand در stdlib تعریف شده.

کد:
void main()
{
شروع تابع اصلی برنامه.

کد:
    int i, n = rand() % 100;
تعریف متغیر i که عددی است که کاربر حدس می زند و وارد می کند.
تعریف متغیر n که عددی تصادفی است بین 0 تا 99.
چون تابع ()rand یک عدد تصادفی بین 0 الی 32767 (در سیستم های 16 بیتی مثل DOS) را تولید می کند، باقیمانده
تقسیم آنرا بر 100 در نظر گرفتم تا عدد زیادی بزرگ نشود یعنی بین 0 تا 99 باقی بماند.

کد:
    clrscr();
پاک کردن صفحه تصویر در ابتدای کار انجام می شود.

کد:
    do
    {
وارد حلقه ای می شویم که اعداد در آن از کاربر دریافت می شود.

کد:
        cout << endl << "Please enter the correct number : ";
چاپ پیغام برای دریافت یک عدد، قبل از چاپ پیغام با endl به ابتدای سطر بعدی می رویم.

کد:
        cin >> i;
عددی که کاربر حدس زده در i دریافت می شود.

کد:
        if (i == n)
            break;
اگر متغیر i (عددی که کاربر حدس زده) با n (عددی که در ابتدا بصورت تصادفی ساخته ایم) یکسان است پس
با break از حلقه خارج می شویم و کار تمام شد.

کد:
        if (n > i)
        {
و اگر عددی که ما ایجاد کرده ایم از عددی که کاربر حدس زده بزرگتر است...

کد:
            cout << "No, Try a greater number.";
            continue;
        }
پیغامی چاپ کن که یک عدد بزرگتر حدس بزند و با continue حلقه از ابتدا عدد دیگری دریافت کند.

کد:
        cout << "No, Try a less number.";
دو شرط مساوی و بزرگتر بودن قبلا بررسی شده اند، پس در اینجا تنها حالت باقی مانده، کوچکتر بودن n از i است.
پس پیغام بده که عدد کوچکتری را حدس بزند.

کد:
    } while (i!=n);
}
این حلقه با شرط مساوی نبودن i با n ادامه می یابد (این شرط همواره برقرار است و اجرای حلقه بی انتها است،
مگر آنکه قبلا با break از آن خارج شویم.
پس می توانستیم بجای این شرط (i!=n) هر شرطی که true باشد را بنویسیم، مثلا (1==1)
 
تشکر مینم به خاطر توضیحات دقیقتون
فقط یک سوال داشتم
میشه بجای cout از printf و بجای cin از scanf استفاده کرد ؟
 

the_king

مدیرکل انجمن
بله. از scanf و printf هم می توانید استفاده کنید :

کد:
#include "stdio.h"
#include "conio.h"
#include "stdlib.h"

void main()
{
    int i, n = rand() % 100;
    clrscr();
    do
    {
        [B]printf[/B] ("\nPlease enter the correct number : ");
        [B]scanf[/B]("%d",&i);
        if (i == n)
            break;
        if (n > i)
        {
            [B]printf[/B] ("No, Try a greater number.");
            continue;
        }
        [B]printf[/B] ("No, Try a less number.");
    } while (i!=n);
}
 

the_king

مدیرکل انجمن
بله، به دلیل اینکه محاسبات اعداد تصادفی وابسته به یک عدد پایه هستند. اگر مقدار این عدد پایه همواره
از عدد ثابتی شروع شود، در اجراهای مختلف یک سری اعداد یکسانی تولید می شوند.
با include کردن time.h و اجرای تابع ()randomize در ابتدای برنامه، عدد پایه بر اساس تایمر سیستم تغییر خواهد کرد
و اعداد تولید شده در اجراهای مختلف یکسان نخواهند بود.
تابع ()randomize بایستی پیش از فراخوانی تابع ()rand انجام شود :

کد:
#include "stdio.h"
#include "conio.h"
#include "stdlib.h"
#include "time.h"

void main()
{
[B]randomize[/B]();
    int i, n = rand() % 100;

بقیه کد برنامه همان خواهد بود که قبلا نوشته ام.
 

fer230

New Member
برنامه ای برای اجرای بازی حدس با قوانین زیر:
یک عدد تصادفی کمتر از1000توسط برنامه انتخاب شود
کاربر می تواند حداکثر10بار شانس خود را امتحان کند
برای هر حدس یکی از 3حالت زیر است
you win!
play again(y/n)
too high.try again
too low.try again
اگر بعد از10بار کاربر نتواند عدد درست را حدس بزند باپیغام زیر مواجه می شود
you have no more choice.the number was ...
play again?(y/n
 

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

بالا