مشاهده نسخه کامل
: راهنمایی در مورد برنامه ای با آرایه ها
ehsaaaan
12-01-2010, 17:27
سلام دوستان.
کد زیر برنامه ای هستش که اعداد مضرب 3 مابین 100 تا 200 را داخل آرایه قرار می دهد و آن ها را از آخر چاپ می کند
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
میخواستم بدونم چرا در خط زیر j منهای یک شده؟دیدم وقتی j منهای یک نشه تو خروجی غیر از اعداد مابین 100 تا 200 که مضرب 3 هستن یک عدد چرت و پرت که اصلا معلوم نیست از کجا اومده هم نشون داده میشه.
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
Arman_BM
12-01-2010, 17:46
به به سلام
آقا احسان کم اینجا سر میزنی ها. بیشتر بیا
دلیلش اینه که در قسمت زیر:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
J++ رو بعد از array[j]= i نوشته
اولین عدد مضرب 3 رو تو اولین خونه ی آرایه (یعنی j=0) میزاره و سپس j=1 میشه.. همینطور که پیش میره آخرین مضرب 3 رو تو آرایه میزاره و j++ میشه یعنی الان شماره ی j یکی بیشتر از شماره ی آخرین خونه ی پر شده ی آرایه هست.
بنا بر این زمان چاپ کردن باید یکی از j کم کنیم.
نکته اینکه در زبان c وقتی متغیر آرایه ای رو تعریف میکنیم، خود به خود اعدادی درون خانه های آرایه وجود خواهند داشت که این اعداد لزوما صفر نیستند. آن عدد بیربطی هم که چاپ کرده دلیلش همین بوده.
البته نکته ی بالا در مورد متغیر های عمومی صادق نیست. وقتی متغیری رو خارج از main تعریف کنید، مقدار اولیه اش صفر خواهد بود.
موفق و شادمان باشید
یا حقیقت هستی.
ehsaaaan
12-01-2010, 18:03
چرا سر میزنم آرمان جون:40: و اتفاقا پست های شما رو هم تو این انجمن خوندم ولی چشم بیشتر سر میزنم:10:
توضیحت خیلی عالی بود.:20:
قشنگ گرفتم چی شد.:11:
دستت درد نکنه:10:
خود به خود اعدادی درون خانه های آرایه وجود خواهند داشت که این اعداد لزوما صفر نیستند.
هميشه عدد نيست , ميتونه نول يا كاراكتر هم باشه.
ولي چون ارايه int هست , كاراكتر ها تبديل به عدد ميشن,
ولي نول , نول ميمونه؟
Arman_BM
12-01-2010, 19:36
هميشه عدد نيست , ميتونه نول يا كاراكتر هم باشه.
ولي چون ارايه int هست , كاراكتر ها تبديل به عدد ميشن,
ولي نول , نول ميمونه؟
بنظرم null هم کد اسکی داره دیگه.
بنظرم null هم کد اسکی داره دیگه.
به نظر من هم تبديل ميشه .
كسي نميدونه تبديل ميشه يا نه ؟ اگه ميشه به چي ؟
sin2x=2sinxcosx
12-01-2010, 21:22
یعنی چی ؟ من نگرفتم . اگه یه کاراکتر رو تو یه int ذخیره کنیم کد اسکیش ذخیره میشه . مشکل چیه ؟
مشکل چیه ؟
كد اسكي نول چي هست ؟
اصلا
كد اسكي داره ؟
sin2x=2sinxcosx
12-01-2010, 21:28
بله که داره . صفر هست .
تا جايي كه من امتحان كردم براي كد اسكي نول، صفر قرار مي گيره.
CppBuilder2006
13-01-2010, 19:38
یه چیزی که اساتید محترم C نمیگن اینه که در این زبان اصلا چیزی به اسم کاراکتر، نول و .. نداریم. فقط عدد داریم. کاراکتر یه عدد یه بایتیه. این که این عدد چه شکلی چاپ میشه مربوط به cout ته.
به جای char در کامپایلرهای جدید میشه نوشت int8__
نول هم همون صفره.
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
به جای char در کامپایلرهای جدید میشه نوشت int8__
البته در استفاده از int8__ باید اینو در نظر گرفت که این یه نوع استاندارد نیست،
اگر اشتباه نکنم این داده مخصوص کامپایلر های ماکروسافت هم هست
. این که این عدد چه شکلی چاپ میشه مربوط به cout ته.
[
متوجه نيمشم
يعني شما ميگيد كه تويه حافظه (قبل از اين كه خروجي بده) داخل ارايه char هيچ كاراكتري نيست واگر بشه حافظه رو ديد فقط عدد ميبينيم و هنگام چاپ شدن تبديل به كاراكتر ميشه ؟
CppBuilder2006
13-01-2010, 21:44
البته در استفاده از int8__ باید اینو در نظر گرفت که این یه نوع استاندارد نیست،
اگر اشتباه نکنم این داده مخصوص کامپایلر های ماکروسافت هم هست
یه اسم دیگه برای char ره همین. devc و C++Builder هم میشناسنش.
متوجه نيمشم
يعني شما ميگيد كه تويه حافظه (قبل از اين كه خروجي بده) داخل ارايه char هيچ كاراكتري نيست واگر بشه حافظه رو ديد فقط عدد ميبينيم و هنگام چاپ شدن تبديل به كاراكتر ميشه ؟
cout میبینه نوع متغیر با مقدار 97 چیه، اگه int باشه، 97 چاپ میکنه اگه char باشه a.
فکر میکنم توی اون pdf توی وبلاگ خیلی بیش تر توضیح داده باشم..
من رفتم تا یه ماه دیگه پیدام نمیشه!:46:یه ملتی توی فروما مختلف از دسسم راحت میشن!:31:
cout میبینه نوع متغیر با مقدار 97 چیه، اگه int باشه، 97 چاپ میکنه اگه char باشه a.
خروجي اخرين filter(فارسي ميزدم نشون نميداد:31:) براي نمايش هست, اين درست.
فرض كنيد داريم
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
تويه متغير b مقدارش يعني a قرار ميگيره نه عدد.
حالا اگه بگيم
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
عدد 97 چاپ ميشه. ولي تويه حافظه a بود, نه عدد.
اينطور كه شما ميگيد, يعني تويه حافظه فقط عدد هست.
----
تويه ارايه هم مثل همينه, عكس زير watch از دو ارايه يكي int و يكي char هست كه هنوز مقدار دهي نشدن.
نگاه كنيد تويه حافظه char , فقط عدد نيست, و ربطي به خروجي نداره.
اين اعداد, در int همون هايي هستن كه باعث شدن محاسباته اقا احسان غلط بشن.
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
vBulletin , Copyright ©2000-2025, Jelsoft Enterprises Ltd.