PDA

View Full Version : خروجی اضافی



obaid1372
یک شنبه 31 اردیبهشت 1391, 14:08 عصر
با سلام
دوستان من یه برنامه نوشتم ولی نمی دونم چرا یه خروجی اضافی چا‍پ می کنه !‌
هر بار بعد از اجرای تابع و چاپ نتیجه عدد 1 رو هم چاپ می کنه


#include <iostream>
#include <cstdio>
using namespace std ;
bool evenchecker ( int );
int main()
{

int x ;
cout << "Plese enter Number: " ;
while((x=cin.get())!= EOF)
{

cout <<evenchecker(x) <<endl ;

}

return 0;
}
bool evenchecker ( int a )
{

if (a % 2 == 0 )
{
return true ;
}

else
{
return false ;
}

}

shahmohammadi
یک شنبه 31 اردیبهشت 1391, 20:07 عصر
با سلام.
وقتي ورودي رو با اين كد مي گيريد، كد اسكي شو مي گيره.
فرض كنيم كه عدد 123 رو بهش داديم. و بعد اينتر زديم. (1 به خاطر همين اينتر هست)
اول '1' رو مي گيره و بعد '2' و '3' و بعد عدد 10 (كد اسكي اينتر) رو به ترتيب در يك پشته قرار مي ده. در قدم اول حلقه مي آد اولين چيزي رو كه گرفته در ايكس قرار مي‌ده. بعد مي آد كد اسكي 1 رو كه همون 49 هست بررسي مي كنه كه زوج هست يا نه. و 0 رو چاپ مي كنه.
در قدم بعدي حلقه، cin دوباره اجرا مي‌شه، اما قبل از اينكه بره از ورودي چيزي رو بگيره به پشته‌اش نگاه مي‌كنه تا اگه چيزي بود به جاي گرفتن از ورودي از اونجا بگيره. پس كد اسكي 2 يعني 50 رو مي گيره و بررسي مي كنه كه زوج هست يا نه. و ...
و اما اون 1 اضافي كه در برنامه چاپ مي شه، كد اسكي اينتر هست كه 10 هست و زوج هست ودر آخر پشته قرار داشت.