نمایش نتایج 1 تا 9 از 9

نام تاپیک: سوال در مورد دستورات شرطی؟

  1. #1

    سوال در مورد دستورات شرطی؟

    با سلام به تمامی دوستان

    دوستان من یه سوال داشتم در زبان C سوالم این بود :

    برنامه ای هست که دو تا ورودی میگره a,b که یکیش ما می تونیم اعداد 1 تا 7 رو وارد کنیم
    که نشان دهنده ی روز های هفته هستش مثلآ : 1 رو بزنیم میشه شنبه و.... و در دومی
    ورودی می تونیم اعداد 1 تا 12 رو وارد کنیم که نشان دهنده ی ماه سال هستش که مثلآ : 1 رو بزنیم میشه فروردین .

    این سوال حل کردنش کاری نداره فقط بدیش اینه که باید از شرط های
    زیاد استفاده کرد می خواستم ببینم راه بهتری هم هست که با دستورات شرطی بشه حل کرد


    توجه : فقط ما می تونیم از دستورات شرطی استفاده کنیم از حلقه های تکرار نمخوایم استفاده کنیم


    ممنون

  2. #2
    کاربر تازه وارد آواتار yaseriran
    تاریخ عضویت
    خرداد 1387
    محل زندگی
    زمین
    سن
    38
    پست
    92

    نقل قول: سوال در مورد دستورات شرطی؟

    درود!

    با دستور case انجام بدید...




    طفیل هستی عشقند آدمی و پری...

  3. #3
    کاربر دائمی
    تاریخ عضویت
    فروردین 1388
    محل زندگی
    ایران سرای من است
    پست
    2,655

    نقل قول: سوال در مورد دستورات شرطی؟

    خب از آرایه و ایندکس استفاده کنید یعنی اعداد ورودی شما ایندکس به حساب خواهند آمد.

    char *Days[7]={"شنبه","یکشنبه","دوشنبه","سه شنبه","چهار شنبه","پنجشنبه","جمعه"};
    char *Months[12]={"فروردین","اردیبهشت","خرداد" ,"تیر","مرداد","شهریور","مهر","آ بان","آذر","دی","بهمن","اسفند"};
    int x, b
    cout<<"enter day number from 1 to 7";
    cin>>a;
    cout<<"enter month number from 1 to 12";
    cin>>b;
    cout<< Days[a-1]<<"\n";
    cout<< Months[b-1]<<"\n";

    فقط باید ورودی ها را در حوزه تعیین شده وارد شود

  4. #4

    نقل قول: سوال در مورد دستورات شرطی؟

    نقل قول نوشته شده توسط tdkhakpur مشاهده تاپیک
    خب از آرایه و ایندکس استفاده کنید یعنی اعداد ورودی شما ایندکس به حساب خواهند آمد.

    char *Days[7]={"شنبه","یکشنبه","دوشنبه","سه شنبه","چهار شنبه","پنجشنبه","جمعه"};
    char *Months[12]={"فروردین","اردیبهشت","خرداد" ,"تیر","مرداد","شهریور","مهر","آ بان","آذر","دی","بهمن","اسفند"};
    int x, b
    cout<<"enter day number from 1 to 7";
    cin>>a;
    cout<<"enter month number from 1 to 12";
    cin>>b;
    cout<< Days[a-1]<<"\n";
    cout<< Months[b-1]<<"\n";
    فقط باید ورودی ها را در حوزه تعیین شده وارد شود
    ممنون دوست عزیز ولی من گفتم فقط از دستورات شرطی نه آرایه و دستورات دیگه

  5. #5
    کاربر دائمی آواتار PC2st
    تاریخ عضویت
    آذر 1385
    محل زندگی
    کرمانشاه
    سن
    38
    پست
    1,491

    نقل قول: سوال در مورد دستورات شرطی؟

    استفاده از آرایه سرعت بیشتری دارد، احتمالا تمرین دانشجوئی است که باید از دستورات شرطی استفاده کنید...!
    برای استفاده از switch case بهتر است از انواع شمارشی (enum) استفاده کنید.

  6. #6

    نقل قول: سوال در مورد دستورات شرطی؟

    نه دوست عزیز تمرین دانشجوی نیست این تمریناتی هستش که خودم دارم حل می کنم چون تازه وارد زبان C شدم

    چون من با switch case هم امتحان کردم ولی باز هم کد رو زیاد میکنه

    دوست عزیز PC2st میشه در مورد روش enum توضیح بدید

    ممنون

  7. #7
    کاربر دائمی آواتار PC2st
    تاریخ عضویت
    آذر 1385
    محل زندگی
    کرمانشاه
    سن
    38
    پست
    1,491

    نقل قول: سوال در مورد دستورات شرطی؟

    چون من با switch case هم امتحان کردم ولی باز هم کد رو زیاد میکنه
    بدون استفاده از آرایه، لیست، مپ یا غیره، به هر حال باید کد بیشتری وارد کنید. چون همانطور که از اسم دستورات شرطی واضح است، باید از بین شرط‌ها انتخاب کنید و به ازای هر کنترل شرط، کاهش سرعت را در پی خواهید داشت. در مقابل و استفاده از چیزی شبیه به آرایه‌ها، در ازای مقدار حافظه‌ای که تخصیص می‌دهید، سرعت را مبادله می‌کنید.

    دوست عزیز PC2st میشه در مورد روش enum توضیح بدید
    استفاده از enum برای خوانایی بیشر کدها و احتمال تغییر کدها در آینده:

    #include <iostream>
    #include <string>

    enum Days
    {
    SATURDAY,
    SUNDAY,
    MONDAY,
    TUESDAY,
    WEDNESDAY,
    THURSDAY,
    FRIDAY
    };

    std::string day_of_week (Days day)
    {
    switch (day)
    {
    case SATURDAY:
    return "شنبه";
    case SUNDAY:
    return "یکشنبه";
    case MONDAY:
    return "دوشنبه";
    case TUESDAY:
    return "سه‌شنبه";
    case WEDNESDAY:
    return "چهارشنبه";
    case THURSDAY:
    return "پنجشنبه";
    case FRIDAY:
    return "جمعه";
    }
    return "";
    }

    int main ()
    {
    std::cout << day_of_week (TUESDAY) << std::endl;
    return 0;
    }

  8. #8

    نقل قول: سوال در مورد دستورات شرطی؟

    ممنون از اینکه پاسخ من رو میدید یه سوال می تونیم ما بجوای رشته در enum اونجایی که نوشتید( enum (day روز ها رو به رشته گرفتید میشه به صورت عدد هم گرفت مثلآ بجای SATURDAY بنویسم 1 که مشخص کننده ی شنبه هستش در ضمن ببخشید یه سوال میتدی دیگه ما نمی تونیم چیزی رو از ورودی بگیریم همونطور که گفتم .مثلآ بجای SATURDAY بنویسم 1 که البته از ورودی گرفته بشه یه دنیا ممنون

  9. #9
    کاربر دائمی آواتار PC2st
    تاریخ عضویت
    آذر 1385
    محل زندگی
    کرمانشاه
    سن
    38
    پست
    1,491

    نقل قول: سوال در مورد دستورات شرطی؟

    بله می‌شود:

    std::cout << day_of_week ((Days)3) << std::endl;
    اما بهتر است این کار را نکنید (منظورم نباید نیست)، چونکه یکی از دلایل استفاده از enum در اینجا این است که خود را از مقادیر عددی (جزئیات پیاده‌سازی) دور کنیم. در اینصورت اگر بعدها تصمیم بگیریم که enum را به اینصورت تغییر دهیم تا به جای شنبه از یکشنبه شروع شود:

    enum Days
    {
    SUNDAY,
    MONDAY,
    TUESDAY,
    WEDNESDAY,
    THURSDAY,
    FRIDAY,
    SATURDAY
    };
    در اینصورت کد قبل که عدد ۳ را به معادل روز هفته تبدیل می‌کند، نتیجهٔ کاملا متفاوتی را دربرخواهد داشت.

    ویرایش: اگر می‌خواهید در هرصورت نتیجه تغییر نکند و اعداد خاصی را بتوانید به عنوان معادل برای اجزاء enum مرتبط کنید: ۱) باید مقادیر enum را بصورت دستی مشخص کنید و یا ۲) ترتیب اجزای آنرا تغییر ندهید.

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •