ورود به حساب ثبت نام جدید فراموشی کلمه عبور
برای ورود به حساب کاربری خود، نام کاربری و کلمه عبورتان را در زیر وارد کرده و روی «ورود به سایت» کلیک کنید.





اگر فرم ورود برای شما نمایش داده نمیشود، اینجا را کلیک کنید.









اگر فرم ثبت نام برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.









اگر فرم بازیابی کلمه عبور برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.






جهت تبلیغ در وب سایت ECA کلیک کنید.

کاربران برچسب زده شده

نمایش نتایج: از 1 به 7 از 7
  1. #1
    2011/08/04
    102
    4

    اشکال در اجرای برنامه

    به نام سلام
    برنامه زیر برای خواندن کاراکتر از ورودی نوشته شده است.اما یک warning از دستور ch=cin.get();می دهد که نمی دانم باید چکار کنم.
    لطفا راهنمایی ام کنید.
    با سپاس


    <include <iostream.h#
    <include <conio.h#
    int main()
    {
    char ch;
    cout<<"Enter a character:";
    ch=cin.get();
    cout<<"You typed character:"<<ch;
    getch();
    return 0;
    }

    Warning: Conversion may lose significant digits

    زیبا باش و بخند بر هرآنچه زشتی است،چرا که تنهاترین شان تو ،زیبایی است.
  2. #2
    2008/09/02
    اصفهان
    1,897
    37

    پاسخ : اشکال در اجرای برنامه

    نوع ch رو به int تغییر بده. برای فهمیدن مشکل یادت باشه که اولا نوع برگشتی تابع فوق int هست و ثانیا این تابع ممکنه EOF برگردونه. که این مقدار؛ چیزی جدای مقدار 0 تا 255 هست. پس به بیش از یک بایت برای ذخیره اطلاعاتش احتیاج هست.
  3. #3
    2011/08/04
    102
    4

    پاسخ : اشکال در اجرای برنامه

    نقل قول نوشته اصلی توسط رضا آقازاده
    نوع ch رو به int تغییر بده. برای فهمیدن مشکل یادت باشه که اولا نوع برگشتی تابع فوق int هست و ثانیا این تابع ممکنه EOF برگردونه. که این مقدار؛ چیزی جدای مقدار 0 تا 255 هست. پس به بیش از یک بایت برای ذخیره اطلاعاتش احتیاج هست.
    با سلام وتشکر از اینکه وقت گذاشته وپاسخ دادید.
    اما چند نکته وجود دارد:
    1-اگر نوع ch را به فرم int تغییر دهم،بجای خود کاراکتر،کداسکی آنرا چاپ می کند.
    2-برنامه فوق بسیار ساده است اما مشکل من در ایجاد Warning فوق در برنامه هایی است که از cin.get برای خواندن کاراکتر ورودی استفاده می شود.
    3-اینکه بیان کردید تابع ممکنه Eof برگردونه یعنی چی؟
    ممنون میشم راهنمایی ام کنید.
    با سپاس ودرود فراوان
    زیبا باش و بخند بر هرآنچه زشتی است،چرا که تنهاترین شان تو ،زیبایی است.
  4. #4
    2008/09/02
    اصفهان
    1,897
    37

    پاسخ : اشکال در اجرای برنامه

    مواقعی هست که علاوه بر مقادیری که منتظرش هستیم بگیریم و کاری که انتظار وقوعش رو داریم شرایطی پیش میاد که ممکنه سهوا پیش بینی نکرده باشیم. مثلا در هنگام خوندن اطلاعات از یک فایل (من جمله کیبرد) ممکنه هیچ اطلاعاتی نشه خوند و برای اینکار سیستم باید از مکانیسمی برای هشدار این حالت استفاده کنه. خیلی جاها ممکنه از مکانیسم "استثنا" استفاده بشه. ولی در اینجا از برگرداندن یک مقدار غیر معمول استفاده میکنه. مقدار 1- یا با نام سمبلیک EOF. و نه eof یا Eof. بنابراین بازه اطلاعات ما دیگه 0 تا 255 نیست و یک مقدار اضافی (حداقل در این مورد) داره که مجبوریم از یک متغیر با دامنه بالاتر استفاده کنیم. البته میشد از short هم استفاده کنه. اما فرم استاندارد int هست.
    در هنگام خوندن بعد از خوندن باید چک بشه آیا شرایط خاصی مثل همین EOF پیش اومده یا خیر. در صورت پیش نیومدن شما میتونین با یک cast مثلا با قرار دادن (char) قبل از متغیر مربوطه در خروجی cout به سیستم بفهمونین که این یک کاراکتر هست که داخل int ریخته شده. یا اینکه از روز اول چشمهاتون رو روی خطاها ببندین و متغیر تون رو با یک cast به char تبدیل کنین. در اینصورت اگر مقدار برگشتی EOF باشه برنامه شما اون رو به عنوان کاراکتر 255 فرض میکنه. که البته دیگه مشکل خودتونه.
  5. #5
    2011/08/02
    414
    0

    پاسخ : اشکال در اجرای برنامه

    char ch را به unsigned char ch تغییر بدین
  6. #6
    2009/10/21
    تهران
    2,507
    210

    پاسخ : اشکال در اجرای برنامه

    نقل قول نوشته اصلی توسط amir-ak
    1-اگر نوع ch را به فرم int تغییر دهم،بجای خود کاراکتر،کداسکی آنرا چاپ می کند.
    برای چاپ کاراکتر بنویسید :

    cout<<"You typed character:"<<(char)ch;
  7. #7
    2011/08/04
    102
    4

    پاسخ : اشکال در اجرای برنامه

    با سپاس فراوان از تمامی دوستانی که پاسخ داده وراهنمایی ام کردند.
    پیشنهاد استفاده از type casting پیشنهاد مفید وسازنده ای است اما
    1-چگونه می توان فهمید که آیا EOF رخ داده است یا نه؟آیا Warning ای که نوشتم مبین بروز EOF است؟
    آیا میتوان مشکل EOF را برطرف نمود؟اگر پاسخ مثبت است،چگونه؟
    2-چگونه می توان دریافت که اشکال اصلی در بروز چنین خطاهایی از کجاست؟آیا می توان به جای استفاده از راههای میانبری چون tyep castingخود اشکال Warning یاError ایجاد شده را برطرف نمود.
    می دونم زیاد سوال پرسیدم،اما دوست دارم بیشتر بدانم وممنون میشم که به من بیاموزید.اگر کتاب یا منبعی برای درک بهتر پرسش های فوق وجود دارد معرفی کنید(این را از آنجهت گفتم که مزاحم وقت دوستان نشوم،والا واقف به دانش وگاهی شما عزیزان هستم)
    با سپاس ودرود فراوان
    زیبا باش و بخند بر هرآنچه زشتی است،چرا که تنهاترین شان تو ،زیبایی است.
نمایش نتایج: از 1 به 7 از 7

موضوعات مشابه

  1. اشکال در اجرای برنامه
    توسط mralisoltani در انجمن Matlab
    پاسخ: 1
    آخرين نوشته: 2015/11/10, 15:51
  2. اشکال در اجرای برنامه
    توسط Himmel در انجمن PLC
    پاسخ: 1
    آخرين نوشته: 2015/07/22, 21:38
  3. عدم اجرای برنامه های حجم زیاد
    توسط bah69man در انجمن NXP
    پاسخ: 7
    آخرين نوشته: 2013/08/21, 20:52
  4. اجرای یک برنامه در برنامه دیگر
    توسط ali_elect62 در انجمن Labview
    پاسخ: 7
    آخرين نوشته: 2011/12/21, 07:16
  5. پاسخ: 9
    آخرين نوشته: 2009/04/03, 20:04

کلمات کلیدی این موضوع

علاقه مندي ها (Bookmarks)

علاقه مندي ها (Bookmarks)

مجوز های ارسال و ویرایش

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