PDA

View Full Version : سوال: کار با Operator ها



tstsst
شنبه 17 فروردین 1392, 22:19 عصر
سلام

من در این زبان تازه کارم و داشتم برنامه ای مینوشتم که با اررور مواجه شدم :
std::cout << ((i % 10) == 0 ? std::endl : i);
به جای endl هر عدد و یا هر تک حرفی میشه گذاشت ولی من می خوام به خط بعد بره ؟!
حتی به '\n' هم ایرادی نمی گیره ولی فقط کد اسکی شو که عدد 10 چاپ می کنه .
از شرط if یا ... نمی خوام استفاده کنم هیچ راهی نداره که به خط بعد بره ؟

MinusOne
یک شنبه 18 فروردین 1392, 00:33 صبح
ببین این جواب میده :
std::cout << ((i % 10) == 0 ? (char)(std::endl) : i);

tstsst
یک شنبه 18 فروردین 1392, 11:15 صبح
سلام
اررور میده
1 IntelliSense: cannot determine which instance of overloaded function "std::endl" is intended c:\Users\-----\Documents\Visual Studio 2012\Projects\ConsoleApplication2\ConsoleApplicati on2\Source.cpp 133 33 ConsoleApplication2

روی هردو پرانتز قبل endl و char

shahmohammadi
دوشنبه 19 فروردین 1392, 19:20 عصر
سلام.
فكر نكنم بشه.
چون دو عملوند اين دستور بايد از يك نوع باشند.
يا هر دو كاراكتر يا هر دو عدد صحيح يا هر دو عدد اعشاري و يا انواعي مثل std::endl

در اين كار بايد از ?: صزف نظر كنيد و يك دستور ديگه بنويسيد.

tstsst
دوشنبه 19 فروردین 1392, 22:44 عصر
سلام.
فكر نكنم بشه.
چون دو عملوند اين دستور بايد از يك نوع باشند.
يا هر دو كاراكتر يا هر دو عدد صحيح يا هر دو عدد اعشاري و يا انواعي مثل std::endl

در اين كار بايد از ?: صزف نظر كنيد و يك دستور ديگه بنويسيد.

خیلی متشکر نیازی به صرف نظر کردن نیست خودتون گفتین

دو عملوند اين دستور بايد از يك نوع باشند
پس می شه این جوری نوشت.
std::cout << ((i % 10) == 0 ? '\n' : (char)(arr[i] + '0'));
متشکر از راهنمایی.

shahmohammadi
دوشنبه 19 فروردین 1392, 23:21 عصر
بله. اگر عدد يك رقمي باشه مي شه اين‌ كارو كرد.