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

نام تاپیک: سوال

  1. #1

    سوال

    سلام چرا این برنامه اجرا نمیشه خط 6 ارور no match oprator میده
    <include <iostream>#
    ;using namespace std
    ()int main
    ;{enum Answer{NO=0,FALSE=0,YES=1,TRUE=1,OK=1
    ;Answer answer
    ;cin>>answer
    ";if (answer==true) cout << "you said OK

  2. #2

    نقل قول: سوال

    نقل قول نوشته شده توسط علی چمران مشاهده تاپیک
    سلام چرا این برنامه اجرا نمیشه خط 6 ارور no match oprator میده
    <include <iostream>#
    ;using namespace std
    ()int main
    ;{enum Answer{NO=0,FALSE=0,YES=1,TRUE=1,OK=1
    ;Answer answer
    ;cin>>answer
    ";if (answer==true) cout << "you said OK
    اگه در هنگام درج کد برنامه نویسی در پست ها از تگ هایی که مخصوص قرار دادن کد (مثلا ++C) در ویرایشگر وجود دارد استفاده کنید به خوانایی آن کمک زیادی می کنید.
    enum ای که به نام Answer تعریف می کنید برای std::cin ناشناخته است، به همین جهت cin نمیدونه چطور باید عملگر << را برای انتقال مقدار به Answer بکار ببرد.
    برای رفع این مشکل فرضا می توانید یک متغیر int را واسطه کنید :

    #include <iostream>
    using namespace std;
    int main() {
    enum Answer {NO=0,FALSE=0,YES=1,TRUE=1,OK=1};
    Answer answer;
    int n;
    cin >> n;
    answer = (Answer)n;
    if (answer==true)
    cout << "you said OK";
    return 0;
    }


    یا برای انتقال مقدار از cin به Answer قبلا عملگر << رو تعریف کنید تا cin بدونه که چطور باید مقدار به Answer انتقال بده :

    #include <iostream>
    using namespace std;
    enum Answer {NO=0,FALSE=0,YES=1,TRUE=1,OK=1};
    istream& operator >>(istream &input, Answer &a)
    {
    int n;
    input >> n;
    a = (Answer)n;
    return input;
    }
    int main() {
    Answer answer;
    cin >> answer;
    if (answer==true)
    cout << "you said OK";
    return 0;
    }

  3. #3
    کاربر تازه وارد آواتار sd702004
    تاریخ عضویت
    مرداد 1398
    محل زندگی
    مشهد
    پست
    89

    نقل قول: سوال

    enum این اوپراتور رو نداره و این ارور بهمین خاطره. در حالت کلی از تعریف operator میشه استفاده کرد (مثل کاری که دوست مون انجام دادن) اما اگر قراره از کاربر مقادیر متنی نظیر NO و YES گرفته بشه روش بهتر استفاده از map هستش. مثال:
    #include <iostream>
    #include <map>
    #include <string>
    using namespace std;

    int main(){
    map<string, bool> answer_list = { {"NO",false}, {"FALSE",false}, {"TRUE",true}, {"YES", true} };
    string answer;
    cin >> answer;
    if (answer_list.at(answer)) cout << "you said OK";
    }

    البته در این کد چنان چه جوابی که از کاربر دریافت میشه غیر از اون چهار موردی باشه که تعیین کردیم باعث میشه که اجرای برنامه با ارور روبرو بشه و بنابراین در صورت نیاز میشه این کار رو انجام داد:
    #include <iostream>
    #include <map>
    #include <string>
    using namespace std;

    int main(){
    map<string, bool> answer_list = { {"NO",false}, {"FALSE",false}, {"TRUE",true}, {"YES", true} };
    string answer;
    cin >> answer;
    try{
    if (answer_list.at(answer)) cout << "you said OK";
    } catch (out_of_range){
    cout << "invalid answer";
    return 1;
    }
    }

    حتی میتونین جواب دریافتی از کاربر رو ابتدا به حروف بزرگ تبدیل کنید تا کوچک و بزرگ بودن حروف عملکرد متفاوتی نداشته باشه
    آخرین ویرایش به وسیله sd702004 : چهارشنبه 06 فروردین 1399 در 12:11 عصر

تاپیک های مشابه

  1. حرفه ای: دانلود سورس تابلوی تبلیغاتی Led و سورس office 2007
    نوشته شده توسط farboodj1375 در بخش برنامه نویسی در 6 VB
    پاسخ: 8
    آخرین پست: شنبه 28 خرداد 1390, 11:12 صبح
  2. پاسخ: 9
    آخرین پست: یک شنبه 01 خرداد 1390, 19:11 عصر

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

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