واضح آرشیو وب فارسی:سایت ریسک: بازی حدس عدد با سی پلاس devil_xxx2008 10 ارديبهشت 1387, 18:29یک زحمت دیگه برنامه ای بنویسید که سیستم عددی را تولید کند و کاربر حدس زند که چه عددی است اگر کاربر درست حدس زده باشد برنامه اتمام می یابد در غیر این پیام چاپ کند و عدد دیگر را از کاربر دریافت کند Break() , continue() , rand() the_king 10 ارديبهشت 1387, 18:53کدوم پیغام رو چاپ کنه؟ باید در نوشتن برنامه از این تابع و فرمانها استفاده بشه؟ #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 نبود ولی گویا می خواستید که ازشون استفاده بشه. devil_xxx2008 11 ارديبهشت 1387, 15:59آره . خیلی ممنون devil_xxx2008 12 ارديبهشت 1387, 11:14میشه یه توضیحی راجع به برنامه بدین the_king 12 ارديبهشت 1387, 14:50#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) devil_xxx2008 12 ارديبهشت 1387, 16:04تشکر مینم به خاطر توضیحات دقیقتون فقط یک سوال داشتم میشه بجای cout از printf و بجای cin از scanf استفاده کرد ؟ the_king 12 ارديبهشت 1387, 17:38بله. از scanf و printf هم می توانید استفاده کنید : #include "stdio.h" #include "conio.h" #include "stdlib.h" void main() { int i, n = rand() % 100; clrscr(); do { printf (" Please enter the correct number : "); scanf("%d",&i); if (i == n) break; if (n > i) { printf ("No, Try a greater number."); continue; } printf ("No, Try a less number."); } while (i!=n); } devil_xxx2008 13 ارديبهشت 1387, 14:14خیلی ممنونم یه مشکل : همش عدد 46 رو انتخاب میکنه the_king 13 ارديبهشت 1387, 19:14بله، به دلیل اینکه محاسبات اعداد تصادفی وابسته به یک عدد پایه هستند. اگر مقدار این عدد پایه همواره از عدد ثابتی شروع شود، در اجراهای مختلف یک سری اعداد یکسانی تولید می شوند. با include کردن time.h و اجرای تابع ()randomize در ابتدای برنامه، عدد پایه بر اساس تایمر سیستم تغییر خواهد کرد و اعداد تولید شده در اجراهای مختلف یکسان نخواهند بود. تابع ()randomize بایستی پیش از فراخوانی تابع ()rand انجام شود : #include "stdio.h" #include "conio.h" #include "stdlib.h" #include "time.h" void main() { randomize(); int i, n = rand() % 100; بقیه کد برنامه همان خواهد بود که قبلا نوشته ام. fer230 09 آذر 1387, 18:51برنامه ای برای اجرای بازی حدس با قوانین زیر: یک عدد تصادفی کمتر از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
این صفحه را در گوگل محبوب کنید
[ارسال شده از: سایت ریسک]
[مشاهده در: www.ri3k.eu]
[تعداد بازديد از اين مطلب: 4496]