چرا خروجی برنامه زیر 0050205021 می شود؟ (قبل از عدد 1، یک فاصله وجود دارد
void main()
{char c;
cout<<cin.eof();
while((c=cin.get())!=eof)
cout.put(c);
cout<<c<<cin.eof();
}
لطفا اگه میشه کمک کنید
کمک در مورد ++c
مدیر انجمن: rosa_127
Re: کمک در مورد ++c
دوست عزیز من سوالتون رو متوجه نشدم اگر روشن تر بیان کنید شاید بتونم راهنماییتان کنمasemane.shab نوشته شده:چرا خروجی برنامه زیر 0050205021 می شود؟ (قبل از عدد 1، یک فاصله وجود دارد
void main()
{char c;
cout<<cin.eof();
while((c=cin.get())!=eof)
cout.put(c);
cout<<c<<cin.eof();
}
لطفا اگه میشه کمک کنید
-
- پست: 3
- تاریخ عضویت: شنبه 22 خرداد 1389, 12:44 pm
Re: کمک در مورد ++c
لطفا برنامه زیر را trace کنید
(واسه اینکه کد برنامه رو صحیح ببینید اونو تو یه ویرایشگر مثل notepad کپی کنید) این سوال مربوط به کنکور سراسری سال 88 که خروجی رو 0050205021 داده.
//input: 0502^z//
void main()
{char c;
cout<<cin.eof();
while((c=cin.get())!=eof)
cout.put(c);
cout<<c<<cin.eof();
}
متوجه نشدم چرا 0502 دوبار چاپ شده مرسی از کمکت
(واسه اینکه کد برنامه رو صحیح ببینید اونو تو یه ویرایشگر مثل notepad کپی کنید) این سوال مربوط به کنکور سراسری سال 88 که خروجی رو 0050205021 داده.
//input: 0502^z//
void main()
{char c;
cout<<cin.eof();
while((c=cin.get())!=eof)
cout.put(c);
cout<<c<<cin.eof();
}
متوجه نشدم چرا 0502 دوبار چاپ شده مرسی از کمکت
Re: کمک در مورد ++c
میتونی حل تشریحی سوالات 88 را از این آدرس دریافت کنی، امیدوارم بتونه کمکت کنه.asemane.shab نوشته شده:لطفا برنامه زیر را trace کنید
(واسه اینکه کد برنامه رو صحیح ببینید اونو تو یه ویرایشگر مثل notepad کپی کنید) این سوال مربوط به کنکور سراسری سال 88 که خروجی رو 0050205021 داده.
//input: 0502^z//
void main()
{char c;
cout<<cin.eof();
while((c=cin.get())!=eof)
cout.put(c);
cout<<c<<cin.eof();
}
متوجه نشدم چرا 0502 دوبار چاپ شده مرسی از کمکت
http://www.asatidiran.ir/news/detail.asp?id=133
اگر باز اشکال داشتی سوال کن امیدوارم بتونم کمکت کنم
-
- پست: 3
- تاریخ عضویت: شنبه 22 خرداد 1389, 12:44 pm
Re: کمک در مورد ++c
از کمکت ممنون دوست عزیز ولی پاسخ تشریحی نتونست به من کمکی کنه، بصورت خیلی خلاصه وار تشریح کرده
Re: کمک در مورد ++c
دوست عریز این یکی از مثالهای فصل 11 کتاب، چگونه با c++ برنامه بنویسیم،دیتل & دیتل، هست.asemane.shab نوشته شده:از کمکت ممنون دوست عزیز ولی پاسخ تشریحی نتونست به من کمکی کنه، بصورت خیلی خلاصه وار تشریح کرده
این برنامه ابتدا مقدار cin.eof() را چاپ میکند، چون cin به پایان فایل نرسیده مقدار 0 معادل false را چاپ میکنه.
در مرحله بعد به دستور cin.get() میرسه چون بافر خالی هست منتظر ورود اطلاعات می ماند.
بعد از وارد کردن یک عبارت مثلا "0502" و زدن کنترل+ z، به عنوان نشان دهنده پایان فایل و در خاتمه با زدن کلید اینتر دستور cin.get() شروع به خواندن تک تک کاراکترها میکند و هر کاراکتر را داخل متغیر c ذخیره میکند سپس با دستور cout.put کاراکتر خوانده شده را چاپ میکند.
این کار تا زمانی که مقدار c مخالف EOF ( یعنی 1-)هست ادامه پیدا میکند، بعد از این که دستور cin.get() به EOF رسید (1-)، مقدار 1- را در c قرار میدهد و c را با EOF که مقدار آن 1- است مقایسه میکند چون شرط نادرست است از حلقه خارج میشود.
در ادامه دستور cout آخر، ابتدا مقدار c (که کاراکتر با کد 1- ذخیره است) را چاپ میکند.(چاپ فاصله)
و در انتها مقدار cin.eof() را چاپ میکند، چون cin به پایان فایل رسیده مقدار 1 معادل true را چاپ میکنه.
بنابراین :
0 اول را برنامه چاپ میکند.
0502 اولی مربوط به کاربر هست.
0502 دومی مربوط به اجرای برنامه هست.
امیدوارم این توضیحات ناقص من بتونه کمکت کنه.