ورود

View Full Version : مشکل وارد کردن رکورد در دفترچه تلفن C++‎



خلیل غ
جمعه 14 اسفند 1394, 11:51 صبح
با سلام خدمت اساتید
من یه دفترچه تلفن در c++ نوشتم. اما یه مشکل داره. اونم اینه ، زمانی که از منوی حذف یا ویرایش رکورد بر میگردم به منوی اصلی و میخوام رکورد جدید وارد کنم. به جای اینکه ابتدا اسم رو بگیره بعد شماره; مستقیما بعد از زدن اینتر از اسم میگذره و میره سراغ شماره تلفن. فایل سورس براتون میفرستم

pbm_soy
شنبه 15 اسفند 1394, 16:22 عصر
من کد شما را ندیدم ولی اون بخش دریافت داده ها را اینجا میگذاشتید بهتر میشد ، چون بیشتر کاربران این سایت سورس شما را دانلود نمیکنند! ( بنا به دلایل مختلف)

ولی حدس میزنم شما چندین دستور دریافت داده را پشت سرهم گذاشتید! معمولا دستورات ورودی که برای رشته ها استفاده میشوند کد کلید اینتر را نمیخوانند منظورم از بافر صفحه کلیدنمیگیرند و در متغییر ذخیره نمیکنند! پس کد کلید اینتر در بافر صفحه کلید باقی مانده است و اولین دستور ورودی بعدی وقتی بافر صفحه کلید را میخواند اینتر را میخواند و اینتر هم به معنی وارد کردن داده توسط کاربر است!

بطور خلاصه:
بعد از دریافت مقدار رشته ای همیشه سعی کنید بافر صفحه کلید را خالی کنید مثلا در c++ متد ignore جریان ورودی cin.ignore

بازهم اگر کد را همینجا میگذاشتید دوستان بهتر راهنمایی میکردند!

خلیل غ
یک شنبه 16 اسفند 1394, 09:29 صبح
من کد شما را ندیدم ولی اون بخش دریافت داده ها را اینجا میگذاشتید بهتر میشد ، چون بیشتر کاربران این سایت سورس شما را دانلود نمیکنند! ( بنا به دلایل مختلف)

ولی حدس میزنم شما چندین دستور دریافت داده را پشت سرهم گذاشتید! معمولا دستورات ورودی که برای رشته ها استفاده میشوند کد کلید اینتر را نمیخوانند منظورم از بافر صفحه کلیدنمیگیرند و در متغییر ذخیره نمیکنند! پس کد کلید اینتر در بافر صفحه کلید باقی مانده است و اولین دستور ورودی بعدی وقتی بافر صفحه کلید را میخواند اینتر را میخواند و اینتر هم به معنی وارد کردن داده توسط کاربر است!

بطور خلاصه:
بعد از دریافت مقدار رشته ای همیشه سعی کنید بافر صفحه کلید را خالی کنید مثلا در C++‎ متد ignore جریان ورودی cin.ignore

بازهم اگر کد را همینجا میگذاشتید دوستان بهتر راهنمایی میکردند!






void EnterData()
{
if(maxlist>2000)

{
gotoxy(5,20);
textcolor(LIGHTRED);
textbackground(0);

cprintf(" the list is full. please enter any key to continue ");
getch();}

else
{
gotoxy(5,20);
textcolor(YELLOW);
textbackground(0);
cprintf( "\n enter name: ");

cin.getline(P,50);
strcpy(name[maxlist],P) ;

gotoxy(5,23);
textcolor(YELLOW);
textbackground(0);
cprintf( "\n enter phone number: ");
cin.getline(K,50);
strcpy(number[maxlist],K) ;
maxlist++;
}

}

خلیل غ
یک شنبه 16 اسفند 1394, 09:31 صبح
cin.ignore را بعد از گرفتن رشته قرار بدم؟؟ خود رشته از حافظه پاک نمیشه و فقط اینتر حذف میشه؟؟

خلیل غ
یک شنبه 16 اسفند 1394, 09:58 صبح
من کد شما را ندیدم ولی اون بخش دریافت داده ها را اینجا میگذاشتید بهتر میشد ، چون بیشتر کاربران این سایت سورس شما را دانلود نمیکنند! ( بنا به دلایل مختلف)

ولی حدس میزنم شما چندین دستور دریافت داده را پشت سرهم گذاشتید! معمولا دستورات ورودی که برای رشته ها استفاده میشوند کد کلید اینتر را نمیخوانند منظورم از بافر صفحه کلیدنمیگیرند و در متغییر ذخیره نمیکنند! پس کد کلید اینتر در بافر صفحه کلید باقی مانده است و اولین دستور ورودی بعدی وقتی بافر صفحه کلید را میخواند اینتر را میخواند و اینتر هم به معنی وارد کردن داده توسط کاربر است!

بطور خلاصه:
بعد از دریافت مقدار رشته ای همیشه سعی کنید بافر صفحه کلید را خالی کنید مثلا در C++‎‎ متد ignore جریان ورودی cin.ignore

بازهم اگر کد را همینجا میگذاشتید دوستان بهتر راهنمایی میکردند!



املای صحیحش چیه؟ cin.ignore; یا cin>>ignore; ???

pbm_soy
یک شنبه 16 اسفند 1394, 15:56 عصر
Cin.ignore(1000,"\n");

pbm_soy
یک شنبه 16 اسفند 1394, 16:04 عصر
یا اینکه یک cin اضافی بگذارید
ویا از توابع سنتی مانند gets میتوانستید استفاده کنید البته یادم نمیاد همچین مشکلیداشت یاخیر؟!
ویا اصلا با استفاده از تابع getch , getche تابع دریافت کننده رشته برای خودتان بنویسید! خیلی راحت بایک حلقه while میتوانید کاراکترها را دریافت کنید و درصورت مخالف بودن با کد اینتر آنرا در آرایه ذخیره کن واگر اینتر باشد در آرایه کاراکتر '\n' را ذخیره کن و از حلقه خارج شو

darya62
پنج شنبه 19 فروردین 1395, 04:33 صبح
سوال : برنامه نویسی به زبان ++C با خروجی به شکل گراف
سلام
ببخشید من سوالمو اینجا مطرح میکنم
من یه برنامه به زبان C++‎‎ نوشتم ، می خوام خروجی هام به صورت گراف در بیاد ، آیا تابع یا کدی هست که چنین کاری رو انجام بده ؟ ( خروجی به صورت graph. )
اگه کسی میدونه لطفا راهنماییم کنه
ممنون