2 ضمیمه
مشکل وارد کردن رکورد در دفترچه تلفن C++
با سلام خدمت اساتید
من یه دفترچه تلفن در C++ نوشتم. اما یه مشکل داره. اونم اینه ، زمانی که از منوی حذف یا ویرایش رکورد بر میگردم به منوی اصلی و میخوام رکورد جدید وارد کنم. به جای اینکه ابتدا اسم رو بگیره بعد شماره; مستقیما بعد از زدن اینتر از اسم میگذره و میره سراغ شماره تلفن. فایل سورس براتون میفرستم
نقل قول: مشکل وارد کردن رکورد در دفترچه تلفن C++
من کد شما را ندیدم ولی اون بخش دریافت داده ها را اینجا میگذاشتید بهتر میشد ، چون بیشتر کاربران این سایت سورس شما را دانلود نمیکنند! ( بنا به دلایل مختلف)
ولی حدس میزنم شما چندین دستور دریافت داده را پشت سرهم گذاشتید! معمولا دستورات ورودی که برای رشته ها استفاده میشوند کد کلید اینتر را نمیخوانند منظورم از بافر صفحه کلیدنمیگیرند و در متغییر ذخیره نمیکنند! پس کد کلید اینتر در بافر صفحه کلید باقی مانده است و اولین دستور ورودی بعدی وقتی بافر صفحه کلید را میخواند اینتر را میخواند و اینتر هم به معنی وارد کردن داده توسط کاربر است!
بطور خلاصه:
بعد از دریافت مقدار رشته ای همیشه سعی کنید بافر صفحه کلید را خالی کنید مثلا در C++ متد ignore جریان ورودی cin.ignore
بازهم اگر کد را همینجا میگذاشتید دوستان بهتر راهنمایی میکردند!
نقل قول: مشکل وارد کردن رکورد در دفترچه تلفن C++
نقل قول:
نوشته شده توسط
pbm_soy
من کد شما را ندیدم ولی اون بخش دریافت داده ها را اینجا میگذاشتید بهتر میشد ، چون بیشتر کاربران این سایت سورس شما را دانلود نمیکنند! ( بنا به دلایل مختلف)
ولی حدس میزنم شما چندین دستور دریافت داده را پشت سرهم گذاشتید! معمولا دستورات ورودی که برای رشته ها استفاده میشوند کد کلید اینتر را نمیخوانند منظورم از بافر صفحه کلیدنمیگیرند و در متغییر ذخیره نمیکنند! پس کد کلید اینتر در بافر صفحه کلید باقی مانده است و اولین دستور ورودی بعدی وقتی بافر صفحه کلید را میخواند اینتر را میخواند و اینتر هم به معنی وارد کردن داده توسط کاربر است!
بطور خلاصه:
بعد از دریافت مقدار رشته ای همیشه سعی کنید بافر صفحه کلید را خالی کنید مثلا در 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++;
}
}
نقل قول: مشکل وارد کردن رکورد در دفترچه تلفن C++
cin.ignore را بعد از گرفتن رشته قرار بدم؟؟ خود رشته از حافظه پاک نمیشه و فقط اینتر حذف میشه؟؟
نقل قول: مشکل وارد کردن رکورد در دفترچه تلفن C++
نقل قول:
نوشته شده توسط
pbm_soy
من کد شما را ندیدم ولی اون بخش دریافت داده ها را اینجا میگذاشتید بهتر میشد ، چون بیشتر کاربران این سایت سورس شما را دانلود نمیکنند! ( بنا به دلایل مختلف)
ولی حدس میزنم شما چندین دستور دریافت داده را پشت سرهم گذاشتید! معمولا دستورات ورودی که برای رشته ها استفاده میشوند کد کلید اینتر را نمیخوانند منظورم از بافر صفحه کلیدنمیگیرند و در متغییر ذخیره نمیکنند! پس کد کلید اینتر در بافر صفحه کلید باقی مانده است و اولین دستور ورودی بعدی وقتی بافر صفحه کلید را میخواند اینتر را میخواند و اینتر هم به معنی وارد کردن داده توسط کاربر است!
بطور خلاصه:
بعد از دریافت مقدار رشته ای همیشه سعی کنید بافر صفحه کلید را خالی کنید مثلا در C++ متد ignore جریان ورودی cin.ignore
بازهم اگر کد را همینجا میگذاشتید دوستان بهتر راهنمایی میکردند!
املای صحیحش چیه؟ cin.ignore; یا cin>>ignore; ???
نقل قول: مشکل وارد کردن رکورد در دفترچه تلفن C++
نقل قول: مشکل وارد کردن رکورد در دفترچه تلفن C++
یا اینکه یک cin اضافی بگذارید
ویا از توابع سنتی مانند gets میتوانستید استفاده کنید البته یادم نمیاد همچین مشکلیداشت یاخیر؟!
ویا اصلا با استفاده از تابع getch , getche تابع دریافت کننده رشته برای خودتان بنویسید! خیلی راحت بایک حلقه while میتوانید کاراکترها را دریافت کنید و درصورت مخالف بودن با کد اینتر آنرا در آرایه ذخیره کن واگر اینتر باشد در آرایه کاراکتر '\n' را ذخیره کن و از حلقه خارج شو
نقل قول: مشکل وارد کردن رکورد در دفترچه تلفن C++
سوال : برنامه نویسی به زبان ++C با خروجی به شکل گراف سلام
ببخشید من سوالمو اینجا مطرح میکنم
من یه برنامه به زبان C++ نوشتم ، می خوام خروجی هام به صورت گراف در بیاد ، آیا تابع یا کدی هست که چنین کاری رو انجام بده ؟ ( خروجی به صورت graph. )
اگه کسی میدونه لطفا راهنماییم کنه
ممنون