انجمن‌های فارسی اوبونتو

لطفاً به انجمن‌ها وارد شده و یا جهت ورود ثبت‌نام نمائید

لطفاً جهت ورود نام کاربری و رمز عبورتان را وارد نمائید


توزیع گنو/لینوکس اوبونتو ۲۰ ساله شد 🎉

نویسنده موضوع: چجوری میشه آخرین کاراکتر چاپ شده تو ++c رو پاک کرد؟ (حل شد)  (دفعات بازدید: 4734 بار)

0 کاربر و 5 مهمان درحال مشاهده موضوع.

آفلاین حامد سپهر

  • High Hero Member
  • *
  • ارسال: 1556
  • جنسیت : پسر
b\ همون backspace هست. این رو اجرا کنید:

cout << "Hello, world";
        cout << "\b\b\b";

سه تا کاراکتر آخر رو پاک می‌کنه. احتمالا مشکل از جای دیگه‌ای هست. اگه کدتون کوچیکه، و البته اگه براتون مهم نیست که کس دیگه‌ای اون رو ببینه، اینجا paste اش کنید تا با کمک دوستان بررسی کنیم و ببینیم شاید راه حل دیگه‌ای هم بود.


واقعا جالبه! این کد شما رو که اجرا میکنم سه کاراکتر آخر رو حذف میکنه! ولی رو کد من جواب نمیده!

برنامه‌ای هم که من نوشتم خیلی سادست! رشته اعداد فیبوناچی رو چاپ میکنه. البته قبلش میپرسه که چند رشته اول میخواین چاپ بشه. کدی هم که براش نوشتم اینه:

#include <iostream>
using namespace std;
main ()
{
int a=1,b=1,c,n;
cout << "Chand adad? (min=2) ";
cin >> n;
cout << "1, 1, ";
if (n>2)
for (int i=2;i<n;i++)
{
c=a+b;
cout << c << ", ";
a=b;
b=c;
}
cout << "\b\b";
cout << endl;
}

الآن اگه ۵عدد اول رو بخواین خروجی این میشه:
1, 1, 2, 3, 5,
من میخوام اون , که آخر هست پاک بشه.

اون دوتا دستوری که نوشتم رو امتحان کردین ؟
جواب میده ها‌!!!!!!!! :'(
    string test = "anjomane ubuntu" ;

    cout << test << endl ;
    test.resize(test.size()-1);
    cout << test << endl ;

خروجی :
anjomane ubuntu
anjomane ubunt
مسئله اینه که کاراکتر آخری که میخوام چاپ بشه توی اون متغییر نیست. یک بار دیگه کد رو بخونین :)

توی اون خط این رو بنویسید:

cout << "\b\b ";
من پیشنهاد می‌کنم به عنوان تمرین بیشتر در مورد کد آقای مرتضی تحقیق کنید. مطمئنم اطلاعات جالبی در مورد رشته ها بدست می یارید.

آها! این کار کرد. ممنون از توضیح روش کار این کد   \\:D/

با این تغییر تو کد کاراکتر آخر اصلا چاپ نمی شه که بخواد پاک بشه(یه جورایی تقلب کردم  :D):
#include <iostream>
using namespace std;
int main ()
{
int a=1,b=1,c,n;
cout << "Chand adad? (min=2) ";
cin >> n;
cout << "1, 1";
if (n>2)
for (int i=2;i<n;i++)
{
c=a+b;
cout << ", "<<c;
a=b;
b=c;
}
cout << endl;
return 0;
}

خب اینجوری که برادر من باز باید بهش بگم که اولین کاراکتر رو پاک کنه! (راهی هست که بهش بگم اولین کاراکتر رو پاک کنه؟؟)


آفلاین آرمان

  • Jr. Member
  • *
  • ارسال: 60
  • جنسیت : پسر
ببخشید من متوجه منظورتون نشدم.
چرا اولین کارکتر پاک شه؟
مگه خروجی به شکلی که می خوایید نیست؟

آفلاین حامد سپهر

  • High Hero Member
  • *
  • ارسال: 1556
  • جنسیت : پسر
ببخشید من متوجه منظورتون نشدم.
چرا اولین کارکتر پاک شه؟
مگه خروجی به شکلی که می خوایید نیست؟

با برنامه شما، خروجی این میشه:
, 1, 1, 2, 3, 5که باز اون ,  که اول چاپ شده مزاحم هست :)

آفلاین آرمان

  • Jr. Member
  • *
  • ارسال: 60
  • جنسیت : پسر
ببخشید من متوجه منظورتون نشدم.
چرا اولین کارکتر پاک شه؟
مگه خروجی به شکلی که می خوایید نیست؟

با برنامه شما، خروجی این میشه:
, 1, 1, 2, 3, 5که باز اون ,  که اول چاپ شده مزاحم هست :)

می شه اول یه بار کامپایل کنید؟
چون من اصلا این جور خروجی نمی ده و دلیلی هم نداره بده.

لطفا یک بار لطفاکامپایل کنید تا خودتون متوجه بشید.

آفلاین حامد سپهر

  • High Hero Member
  • *
  • ارسال: 1556
  • جنسیت : پسر
ببخشید من متوجه منظورتون نشدم.
چرا اولین کارکتر پاک شه؟
مگه خروجی به شکلی که می خوایید نیست؟

با برنامه شما، خروجی این میشه:
, 1, 1, 2, 3, 5که باز اون ,  که اول چاپ شده مزاحم هست :)

می شه اول یه بار کامپایل کنید؟
چون من اصلا این جور خروجی نمی ده و دلیلی هم نداره بده.

لطفا یک بار لطفاکامپایل کنید تا خودتون متوجه بشید.

اوه...! درسته، حق با شماست :) من اشتباه کردم. اینم یه راه حل بود :) ولی از راه حل استفاده از /b بیشتر خوشم اومد. چون تو همه برنامه‌ها که نمیشه با تغییر کد مشکل رو برطرف کرد  ;D