تبلیغات :
ماهان سرور
آکوستیک ، فوم شانه تخم مرغی ، پنل صداگیر ، یونولیت
فروش آنلاین لباس کودک
خرید فالوور ایرانی
خرید فالوور اینستاگرام
خرید ممبر تلگرام

[ + افزودن آگهی متنی جدید ]




نمايش نتايج 1 به 6 از 6

نام تاپيک: مشکل کوچک یک تازه کار

  1. #1
    اگه نباشه جاش خالی می مونه arman_linkin's Avatar
    تاريخ عضويت
    Mar 2006
    محل سكونت
    Vancouver
    پست ها
    255

    پيش فرض مشکل کوچک یک تازه کار

    سلام دوستان
    من تازه چند روزه که دارم C پلاس پلاس یاد می گیرم.
    یک برنامه ساده نوشتم برای اینکه نمره قبولی یا ردی 10 دانش آموز را بگیرد به طوری که 1 به معنی قبول شده و 2 به معنی رد شده در امتحان است.تا اینجا مشکلی پیش نیامد.
    بعد خواستم کاری کنم که اگه کاربر عددی غیر از یک یا دو را بزند اخطار بدهد و از اون سوال کند که مایل به ادامه هست یا نه . اگر y را زد دوباره ادامه کار را سر بگیرد و اگر n را زد از برنامه خارج شود.
    ولی وقتی run می کنمش برنامه توی یک حلقه بی پایان می افتد و بعد از 10 بار وارد کردن 1 یا 2 دوباره شروع به دریافت نمره می کند.
    لطفا بگید مشکل از کجاست.
    سورس برنامه قبل از اضافه کردن ویژگی تشخیص عدد غیر از 1 و 2 که درست کار میکند:
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    سورس بعد از اضافه کردن این ویژگی که درست کار نمی کند:

    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

  2. #2
    اگه نباشه جاش خالی می مونه
    تاريخ عضويت
    Jul 2006
    پست ها
    271

    پيش فرض

    while(ch='y');
    به نظرم ( یعنی قطعا! ) این شرط رو اشتباه به جای == یک علامت مساوی گذاشتی.

  3. #3
    اگه نباشه جاش خالی می مونه arman_linkin's Avatar
    تاريخ عضويت
    Mar 2006
    محل سكونت
    Vancouver
    پست ها
    255

    پيش فرض

    سلام
    ممنون
    ولی درست نشد.
    من اون دستور انتساب رو به == تغییر دادم ولی مشکل کماکان هست.
    به نظرتون ایراد از کجاست؟
    کد اصلاح شده:

    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

    یک عکس از برنامه بعد از کامپایل و اصلاح :

  4. #4
    اگه نباشه جاش خالی می مونه
    تاريخ عضويت
    Jul 2006
    پست ها
    271

    پيش فرض

    شرط رو به while ch == 'n' تغییر بده.

  5. #5
    اگه نباشه جاش خالی می مونه sherlockholmz's Avatar
    تاريخ عضويت
    Oct 2007
    محل سكونت
    دنياي قبل از مرگ
    پست ها
    439

    پيش فرض

    سلام
    برنامه شما چند ايراد كوچك دارد.اولا"محل پرانتزها اشتباه است .ثانيا"محل سوال تكرار نيز صحيح نيست.ثالثا"يادتان باشد هرگاه سوال تكرار داشتيد بايد تمام متغيرها رااينشيالايز كنيد يعني به مقدار اوليه برگردانيد.اينها مهمترين ايراد برنامه شما بود.در ضمن اشكالات كوچك ديگري نيز دارد، مثلا" با وارد كردن عددي اشتباه (بزرگتر از 2)پس از اعلام خطا موقعيت تصحيح وجود نداردو...من با اجازه شما تغييراتي در برنامه اتان دادم وباز نويسي كردم.بررسي آن خالي از فايده نيست

    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

    موفق باشيد

  6. #6
    اگه نباشه جاش خالی می مونه arman_linkin's Avatar
    تاريخ عضويت
    Mar 2006
    محل سكونت
    Vancouver
    پست ها
    255

    پيش فرض

    سلام
    دوست عزیز
    ممنون از برنامه تون ولی این برنامه یک کم با مال من فرق دارد.
    در واقع برنامه شما تا وقتی ch=='y' است از کاربر عدد می گیرد.
    ولی من می خواهم که عمل گرفتن عدد از کاربر که شامل 10 مرحله است فقط یک بار انجام شود و اگر در بین آن کاربر عددی غیر از 1 و 2 وارد کرد پیغام wrong pass بدهد و از او بپرسد آیا مایل به ادامه است یا نه .اگر فرد n را وارد کرد عدد گرفتن را متوقف کرده و متغیر pass و fail را چاپ کند هر چند مجموع آنها 10 نباشد.
    و اگر فرد y را وارد کرد یه عدد گرفتن ادامه دهد(تا وقتی i صفر شود)

    من فکر می کنم مشکل برنامه من این هست که تا وقتی کاربر عددی غیر از 1 و 2 وارد نکرده برنامه درست کار می کند.وقتی عددی غیر از 1 و 2 وارد کند کامپایلر وارد قسمت else می شود که پیغام ها را چاپ کرده و متغیر ch را می گیرد.
    ولی مشکل اینجاست که اگر ch=='n' بشود برنامه در این حالت باید از حلقه for خارج شود ولی این کار انجام نمی شود.در نتیجه برنامه به گرفتن عدد ادامه می دهد!
    ×××من همین الان تونستم درستش کنم ×××
    ولی مشکل این است که اولا یک کم پیچیده شد.
    دوما فکر کنم استفاده از دستور break در حلقه برخلاف اصول برنامه نویسی ساخت یافته باشد.
    اینم کدش :
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

    حالا خواهشم این است که این را یک جوری تغییر بدهید که از break استفاده نکرده باشد.
    مرسی

Thread Information

Users Browsing this Thread

هم اکنون 1 کاربر در حال مشاهده این تاپیک میباشد. (0 کاربر عضو شده و 1 مهمان)

User Tag List

قوانين ايجاد تاپيک در انجمن

  • شما نمی توانید تاپیک ایحاد کنید
  • شما نمی توانید پاسخی ارسال کنید
  • شما نمی توانید فایل پیوست کنید
  • شما نمی توانید پاسخ خود را ویرایش کنید
  •